So-net無料ブログ作成

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