初心者なので予めご了承下さい(笑)。
function OpenWin(){
win=window.open("○○.htm","new","scrollbars=yes");
って言うのをコピってきて、リンク先をスクロールバーのみのウィンドウで開かせる(?)ってのを作ってみました。
結果正常に窓は開くのですが、なぜがリンク元のページに張られている
アニメーションgifが新しい窓を開いた瞬間に止まってしまうのです。
これは仕方ないことなのでしょうか?

A 回答 (2件)

私の環境で確認してみた所...


普通に JavaScript で window.open() を使用する限り、
「リンク元に張られているアニメーションgifが止まってしまう」
事はなかったです。

あくまでも私の推測ですが...
こんな感じ <A HREF="javascript:OpenWin()"> で、
リンクを張って使用されているのなら、確かに止まると思います。
そこで、この場合と仮定して以下に説明します。

あくまでも私の想像なのですが...
本来、HREF="" は次のリンク先を指定する所なので、
ブラウザ内の処理としては既に元のページは終了しており、
アニメーションgifも止まるのではないでしょうか。

そこで、いくつか対策を作ってみました。
私の環境(IE4、IE5、NN4.7)で確認した限りでは、
どれもアニメーションgifは止まりませんでした。

<A HREF="javascript:OpenWin();location.reload()">
<A HREF="javascript:OpenWin();history.go(0)">
IE3 や NN2 でもきっとOKなのではないでしょうか?
しかし、onload 先が指定されているページの場合は、
内容によっては無限ループになってしまいます。

<A HREF="#" ONCLICK="OpenWin()">
これが一番良いのではないでしょうか?
でも古いブラウザでOKかどうかは調べていません。
これを読んでる皆さん!!どうでしょう...

<A ONCLICK="OpenWin()">
これは NN では動作しない上、オススメしません。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございました!
確かに私もwindow.open()ならアニメgifは止まりませんでした。
しかし、<A HREF="javascript:OpenWin()">は止まります。
そこでご回答の通りやってみました。
<A HREF="#" ONCLICK="OpenWin()">の一番下の出来ました!
上の二つは、理想通りに動くことは動くのですが、なぜか砂時計が出続けます。

何はともあれこれで理想通りになりました。
本当にありがとうございました!

お礼日時:2001/05/17 18:44

新しい窓が開いたことで、古い窓がアクティブウィンドウじゃなくなってアニメーションが停止した(アニメーションの書き換えが行われなくなった)のだと思います。


仕方ない事と言えば仕方ないことですね。
アクティブウインドウじゃなくても書き換えを続けるようにすれば...っちゅーのはWeb側から出来ることとは思えませんし。

質問とは関係ないですけど、(笑)を付ける場所は考えた方がいいですよ。
適当に付けてるといらぬトラブルを招きますから...。
「初心者」と「ガキ」は違いますからね。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
やっぱり仕方ないことでしたか。
目をつむるしか方法はなさそうですね。

(笑)に関して・・・すいません。こういうことまでアドバイスいただいて。
確かに適当につけてました。
自分から質問しておいて(笑)はないですよね。大変失礼致しました。

また何かありましたらよろしくお願いします。

お礼日時:2001/05/17 00:38

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aと関連する良く見られている質問

Qjavascript:(function(q, a, z) { q[a]("f")[z] = Ma

javascript:(function(q, a, z) { q[a]("f")[z] = Math.floor(Math.random()*999999);document.forms[0].submit(); })(document, "getElementById" ,"value");

このブックマークレットをsetIntervalで動かしたいのですがどう書き換えればいいのかよくわかりません。

調べたらstartfncやsetInterval(ここに何かを指定?,ミリ秒);を付ければ可能なことがわかったのですがうまくいきません。
初心者です。何卒宜しくお願いします

Aベストアンサー

こんにちは

>setIntervalで動かしたいのですが~~
setIntervalは以下のような構文になります。
 intervalID = window.setInterval(func, delay);
https://developer.mozilla.org/ja/docs/Web/API/Window/setInterval

ご提示のスクリプトは即時関数の形式をとっていますので、さらに関数化(匿名関数でも可)して上記構文のfuncに当てはめれば良いことになります。
http://qiita.com/katsukii/items/cfe9fd968ba0db603b1e
スクリプトは概ね以下の2行と等価ですので、こちらを関数化しても同じですね。
(フォームに乱数を設定しサブミットする)
 document.getElementById("f")..value = Math.floor(Math.random()*999999);
 document.forms[0].submit();


ところで、ご提示のスクリプトではフォームをサブミットするようになっていますが、通常はサブミットするとページが遷移してしまうので、setIntervalで繰り返すことは難しいはずです。
まぁ、target属性が設定されていたりすれば別ですけれど・・・
使い方がいまいちよくわかりませんが、文法的には
 setInterval( function(){
  ~~~
}, dalay);
とするか、
 setInterval(hoge, dalay);
 function hoge(){
  ~~~
 }
のようにすることで、実行が可能なはずです。(繰り返しできる環境であれば・・・)

こんにちは

>setIntervalで動かしたいのですが~~
setIntervalは以下のような構文になります。
 intervalID = window.setInterval(func, delay);
https://developer.mozilla.org/ja/docs/Web/API/Window/setInterval

ご提示のスクリプトは即時関数の形式をとっていますので、さらに関数化(匿名関数でも可)して上記構文のfuncに当てはめれば良いことになります。
http://qiita.com/katsukii/items/cfe9fd968ba0db603b1e
スクリプトは概ね以下の2行と等価ですので、こちらを関数化しても同じですね。
(フォ...続きを読む

Q別窓を開くリンクでリンク元に画像を使用したいのですけども・・・

いつもお世話になります。
また、問題が発生致しました。
javaScriptで別窓を開くリンクでリンク元に画像を利用したいのですけども検索しても文字からのリンクしか見つからず画像からのリンクを教えて頂きたいのですが、よろしくご指導お願い致します。

<SCRIPT LANGUAGE="JavaScript">
<!---
function wopen1(){ window.open("http://www.yahoo.co.jp","yahoo",
"toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=no,width=500,height=300") }
//--->

リンク元で画像を使いたいです。
<A HREF="javascript: wopen1()">ウィンドウ1</A>
これをどのように書き換えれば画像からリンクできますでしょうか?

お手数かけますがお願いいたします。

Aベストアンサー

画像の載せ方は分かりますか?それを<A>タグで挟むだけですよ。

<A HREF="javascript: wopen1()">ウィンドウ1</A>

<A HREF="javascript: wopen1()"><img src="画像Url"></A>
に変更してください。

参考URL:http://www.htmq.com/html/img.shtml

Qonmouseover="this.className=をjsファイルにまとめて、指定する場所はid=menu1,2~....かclass=menuで統一したい

<div class="font1 bor1"
onmouseover="this.className=this.className+' bgcol txcol'"
onmouseout="this.className='font1 bor1'">
というものがあったとしてこれを
<div id="menu1・・・2・・・">だけにして
onmouseover=~をjsに略記できるようにしたいのですが
何かいい手はありませんか?

idで指定できる版のほかに
classで指定できる版があるとうれしいです。classだと難しいでしょうか?

また、こちらももしできればでいいのですが、this.classNameを
指定IDのclassName等もできるのでしょうか?

質問に不足があれば答えられる範囲で答えます。よろしくお願いします。

Aベストアンサー

もうひとつ、質問内容を把握できてませんが、
jQueryを使ったサンプルを。中身は
「font1」ってclassを持つ要素のマウスオーバーで
bgcol と txcol の二つのクラスを追加する。
マウスアウトで
bgcol と txcol の二つのクラスを取り除く。
です。

<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript">
$(function(){

$('.font1').hover(function(){
$(this).addClass("bgcol");
$(this).addClass("txcol");
},function(){
$(this).removeClass("bgcol");
$(this).removeClass("txcol");
});

});
</script>

$('.font1') という部分を $('#font1') と書けば id="font1" の要素に対する設定になります。 

jQueryの解説、入手先等は
http://www.openspc2.org/JavaScript/Ajax/jQuery_study/index.html
とか、参考にしてください。

もうひとつ、質問内容を把握できてませんが、
jQueryを使ったサンプルを。中身は
「font1」ってclassを持つ要素のマウスオーバーで
bgcol と txcol の二つのクラスを追加する。
マウスアウトで
bgcol と txcol の二つのクラスを取り除く。
です。

<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript">
$(function(){

$('.font1').hover(function(){
$(this).addClass("bgcol");
$(this).addClass("txcol");
},function(){
$(this).removeClass("bgcol");...続きを読む

Qリンク先を新しい窓で開くには?

javascript初心者です。

2回目以降、リンク先が一つのページ上に上書きされてしまいます。
リンク先を開くたび新しい窓で開きたいのですがどうしたらよいのでしょうか?
target=_blankやwindow.openなどではないかと思いますが設置場所がよくわかりません。。

また、サンプルソースを見てもjavascriptの部分がいまいち理解できずにいます。
だいたいの流れやURLクリエの部分(HTMLの部分)はなんとなく理解できるのですが文字コードなど表示方法などのところがよくわかりません;;
わかりやすくコメントを書いていただけると助かります!



ソースはこちらです↓
------------------------------------------------------------------------------


<body>
<noscript>JavaScriptが無効です</noscript>


<form name="fm" action="void" onSubmit="return false;">
<table style="background-color: #e0e0e0"><tr><td>
<input Type="text" name="k" size="60" maxlength="255" value="" onKeyPress="if(event.keyCode == 13) { search('google'); }">
<input Type="reset" value="Reset">
</td></tr><tr><td>
<input Type="submit" value="Google" onClick="search('google');">
<input Type="submit" value="Yahoo!" onClick="search('yahoo');">
</td></tr></table>
</form>


<!-- Google -->
<form name="f_google" method="GET" action="http://www.google.com/search" Accept-charset="Shift_JIS">
<input type="hidden" name="q" value=""><input type="hidden" name="ie" value="Shift_JIS">
<input type="hidden" name="oe" value="Shift_JIS"><input type="hidden" name="hl" value="ja">
<input type="hidden" name="lr" value="lang_ja"><input type="hidden" name="num" value="20">
</form>
<!-- Yahoo! -->
<form name="f_yahoo" method="GET" action="http://search.yahoo.co.jp/search" Accept-charset="Shift_JIS">
<input type="hidden" name="ei" value="SJIS">
<input type="hidden" name="fr" value="sfp">
<input type="hidden" name="p" value="">
</form>
<script LANGUAGE="JavaScript" Type="text/javascript">
<!--
function setutf(fx){
bkup=document.charset;
document.charset="utf-8";
display(fx);
document.charset=bkup;
}

function seteuc(fx){
bkup=document.charset;
document.charset="euc-jp";
display(fx);
document.charset=bkup;
}

function setsjis(fx){
bkup=document.charset;
document.charset="shift_jis";
display(fx);
document.charset=bkup;
}

function display(formx) {
swin=window.open("","category_root","");

formx.target="category_root";
formx.submit(); swin.focus();
}

function sitetop(ur) {
swin=window.open(ur,"category_root","");
swin.focus();
}

function search(eng) {
q=document.fm.k.value;

if(eng=="google") { if(q=="") sitetop("http://www.google.co.jp/"); else { fw=document.f_google; fw.q.value=q; setsjis(fw); }}
if(eng=="yahoo") if(q=="") sitetop("http://www.yahoo.co.jp/"); else { { fw=document.f_yahoo; fw.p.value=q; setsjis(fw); }}
}

//-->
</script>
</body>

javascript初心者です。

2回目以降、リンク先が一つのページ上に上書きされてしまいます。
リンク先を開くたび新しい窓で開きたいのですがどうしたらよいのでしょうか?
target=_blankやwindow.openなどではないかと思いますが設置場所がよくわかりません。。

また、サンプルソースを見てもjavascriptの部分がいまいち理解できずにいます。
だいたいの流れやURLクリエの部分(HTMLの部分)はなんとなく理解できるのですが文字コードなど表示方法などのところがよくわかりません;;
わかりやすくコメントを書い...続きを読む

Aベストアンサー

開くたびに新しい窓/タブで開く方法は幾つかあります。
ただし窓なのかタブなのかは環境によって変わるのでご注意ください。

* window.open の第二引数に '_blank' を指定
* 要素 <form> の属性 target に '_blank' を指定して、改行キー or ボタン押下 or submit()
* 要素 <a> の属性 target に '_blank' を指定して、クリック or click()

それにしても、ご提示のサンプルソースがあまり良い教材ではありません。
えらく古いし冗長だし命名も変だし文字コードもUTF8で十分だし...

昔のブラウザを考慮しなければいけない特殊な事情があるなら別ですが、
今ならもっと簡単にすっきり書けます。

<form name=fm>
<input type=text name=k size=60> <button type=reset>Reset</button> <br>
<button type=submit name=ggl>Google</button> <button type=submit name=yho>Yahoo! Japan</button>
</form>
<div style="display:none"><!-- 見せたくないから見せない -->
<form name=subggl method=get target=_blank action="http://www.google.co.jp/search">
<input type=text name=q><a href="http://www.google.co.jp/" target=_blank>top</a></form>
<form name=subyho method=get target=_blank action="http://search.yahoo.co.jp/search">
<input type=text name=p><a href="http://www.yahoo.co.jp/" target=_blank>top</a></form>
</div>

<script>
addEventListener('load', function(){ var _=0; // 読みやすくするオマジナイ
_ ; function searchOnNewTab(name, v) {
_ , _ ; var form = document.forms['sub' + name];
_ , _ ; if (v === '') {
_ , _ , _ ; form.getElementsByTagName('A')[0].click()
_ , _ ; } else {
_ , _ , _ ; form.getElementsByTagName('INPUT')[0].value = v;
_ , _ , _ ; form.submit();
_ , _ ; }
_ ; }
_ ; document.forms['fm'].addEventListener('click', function(ev){
_ , _ ; if (ev.target.type != 'submit') return; // 目的のボタン以外は処理しない
_ , _ ; ev.preventDefault();
_ , _ ; var form = ev.currentTarget;
_ , _ ; var name = ev.target.name;
_ , _ ; var valu = form.elements['k'].value;
_ , _ ; searchOnNewTab(name, valu);
_ ; }, false);
}, false)
</script>

ご参考まで

開くたびに新しい窓/タブで開く方法は幾つかあります。
ただし窓なのかタブなのかは環境によって変わるのでご注意ください。

* window.open の第二引数に '_blank' を指定
* 要素 <form> の属性 target に '_blank' を指定して、改行キー or ボタン押下 or submit()
* 要素 <a> の属性 target に '_blank' を指定して、クリック or click()

それにしても、ご提示のサンプルソースがあまり良い教材ではありません。
えらく古いし冗長だし命名も変だし文字コードもUTF8で十分だし...

昔のブラウザを考慮しなけれ...続きを読む

Qリンクを新しい窓で開きたい

ページ内の外部リンクのみ、新窓で開きたいなと考え、『javascript 新窓』で検索した際に見つけた方法にID指定というものがありました。試してみたところ、一つ目のIDしか反映されませんでした。記述方法を変えれば、複数IDを指定することが可能なのでしょうか?
ご指南お願い致します。

#HTML例 ######################
<p id="sample">
<a href="sample.html">サンプル1</a>
</p>
<p id="sample2">
<a href="sample2.html">サンプル2</a>
</p>

#script記述例 ######################
window.onload = getSrc;

function getSrc() {
var x = document.getElementById('sample','sample2').getElementsByTagName('a');
for (var i=0; i<x.length; i++)
{
x[i].onclick = function () { return openWin(this.href); }
x[i].onkeypress = function () { return openWin(this.href); }
}
}

function openWin(target) {
open(target);
return false;
}

ページ内の外部リンクのみ、新窓で開きたいなと考え、『javascript 新窓』で検索した際に見つけた方法にID指定というものがありました。試してみたところ、一つ目のIDしか反映されませんでした。記述方法を変えれば、複数IDを指定することが可能なのでしょうか?
ご指南お願い致します。

#HTML例 ######################
<p id="sample">
<a href="sample.html">サンプル1</a>
</p>
<p id="sample2">
<a href="sample2.html">サンプル2</a>
</p>

#script記述例 ######################
window.onl...続きを読む

Aベストアンサー

> 記述方法を変えれば、複数IDを指定することが可能なのでしょうか?
getElementByIdは引数を1つしか持てません。
目的を考えるとノードの数は変動するのでしょうから、配列とforの組み合わせがマッチしますが…。

var a = [ 'sample1','sample2' ], node=new Array();
for(var i=0,max=a.length; i<a; i++){
node[i] = document.getElementById(a[i]);
}

しかし、そもそもIDを指定する必要があるのでしょうか?
外部リンクのみ適用させたいのなら、href属性値と現ページのホスト名を照合して一致しなければ、
openWin ないし target='_blank' を付与するだけでも動きます。
実際、昔そういうスクリプトを作って動作確認までしました。


このカテゴリの人気Q&Aランキング

おすすめ情報