SSブログ

Firefoxでwindow.setTimeoutを使ってもポップアップブロックされないスクリプトの一例 [メール投稿]

ポップアップブロックの設定とトラブルシューティング | Firefox ヘルプ
ポップアップウィンドウ をブロックする: ポップアップブロックをすべて無効にするには、このオプション のチェックを外してください

 私はFirefoxのオプションの「コンテンツ」パネルで「ポップアップウィンドウ をブロックする」のチェックを外して使っているのだが、チェックした状態でも、window.open()でポップアップを開こうとするページでポップアップをブロックしないことがあり、いろいろな方法があるようだが、難しくてよく分からない。
 window.open()はページを開いた時に実行されるようだとブロックされるのだが、リンクタグ<a>でonclickを使って開く時はブロックされないらしい。でも、window.setTimeoutを使うとブロックされるらしい。
 でも、window.setTimeoutを使っても、1秒以内ならブロックされなかったり、window.setTimeoutを使わずにポップアップウインドウが表示されていて、そこに名前が付けられていて、その名前のウインドウにwindow.setTimeoutで開いた場合はブロックされないらしい。
 頭が混乱してよく分からないのだが、とにかく、次のようなスクリプトを作って試してみた。

<script type="text/javascript">
<!--
function sample1() {
var popup = window.open("","","width=600,height=500");
var addscript = document.createElement('script');
addscript.type = "text/javascript";
var text = document.createTextNode('window.name="sample"');
addscript.appendChild(text);
popup.document.body.appendChild(addscript);
}
function sample2() {
window.open("http://www002.upp.so-net.ne.jp/self/","sample");
}
function sample3() {
window.open("http://www002.upp.so-net.ne.jp/self/","sample","width=600,height=500");
}
// -->
</script>
<a onclick='sample1();window.setTimeout(function() {sample2();},1);'>(1/1000)秒後にポップアップで私のサイトを開く</a><br />
<a onclick='sample1();window.setTimeout(function() {sample2();},1000);'>1秒後にポップアップで私のサイトを開く</a><br />
<a onclick='sample1();window.setTimeout(function() {sample2();},2000);'>2秒後にポップアップで私のサイトを開く</a><br />
<a onclick='window.setTimeout(function() {sample3();},1000);'>1秒後にポップアップで私のサイトを開く</a><br />
<a onclick='window.setTimeout(function() {sample3();},2000);'>2秒後にポップアップで私のサイトを開く(ポップアップブロック対象)</a><br />


以下は、上のスクリプトをこの記事に張り付けてみたもの。
(1/1000)秒後にポップアップで私のサイトを開く
1秒後にポップアップで私のサイトを開く
2秒後にポップアップで私のサイトを開く
1秒後にポップアップで私のサイトを開く
2秒後にポップアップで私のサイトを開く(ポップアップブロック対象)


続きを読む


nice!(0)  コメント(0)  トラックバック(0) 
共通テーマ:moblog

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。