誰か助けてもらえますか、ブロックされているポップアップがあります。これは、誰かが私のサイトの[画像を印刷]をクリックしたために作成されたポップアップです。
ポップアップがonclick
を介して来たとき、IEはこれらをブロックすることになっていないと思いましたか?
誰か助けてもらえますか?ポップアップブロッカーが有効になっている場合、child1
変数は常にNULL
として返されます。
おそらく問題は、onclick
イベントが、htmlファイルをロードしてchild.document.write
を実行する新しい関数に制御を渡すことです。
これが私の簡単なコードです。
var width = 800;
var height = 600;
var left = parseInt((screen.availWidth / 2) - (width / 2));
var top = parseInt((screen.availHeight / 2) - (height / 2));
var windowFeatures = "width=" + width + ",height=" + height
+ ",menubar=yes,toolbar=yes,scrollbars=yes,resizable=yes,left="
+ left + ",top=" + top + "screenX=" + left + ",screenY=" + top;
child1 = window.open("about:blank", "subWind", windowFeatures);
問題は、現在のホスト内のどこかに移動している場合にのみ、openがウィンドウへの参照を返すことです。ホスト内にないabout:blankに移動しています。
Blank.htmファイルをサイトに追加して、代わりに開いてみてください。 document.writeが許可され、ドキュメントが書き込み用に開かれないかどうかはまだわかりませんが、既存の空白のドキュメントのDOMを操作できる可能性があります。
InternetExplorerのポップアップブロッカーをMedium
フィルターレベルに設定すると、ユーザーの操作によって開始された場合、JavaScriptによって開かれたウィンドウはブロックされません。以下はIE 6、7、8で正常に動作します。
_<script type="text/javascript">
function openWin() {
var width = 800;
var height = 600;
var left = Math.floor((screen.availWidth - width) / 2);
var top = Math.floor((screen.availHeight - height) / 2);
var windowFeatures = "width=" + width + ",height=" + height +
",menubar=yes,toolbar=yes,scrollbars=yes,resizable=yes," +
"left=" + left + ",top=" + top +
"screenX=" + left + ",screenY=" + top;
child1 = window.open("about:blank", "subWind", windowFeatures);
writeTo(child1);
}
function writeTo(w) {
w.document.write('Test');
}
</script>
<a href="#" onclick="openWin();return false;">Test</a>
_
新しく開いたウィンドウで_document.write
_を使用しても、一部のWebブラウザでは機能しないことに注意してください。また、Internet Explorerに表示されているように機能する場合でも、他のブラウザーでポップアップブロッカーがトリガーされる可能性があることに注意してください。
onclick
イベントからJavaScriptを呼び出すと、場合によってはポップアップブロッカーがトリガーされる可能性があることを確認しました。 farwindow.open()
がonclickイベントからどのように発生しているかに関係しているようです。 window.open()
を呼び出す前に関数を呼び出す関数のレベルが多すぎます。あなたの正確な実装を見ずに、これがあなたが抱えている問題であるかどうかを私はあなたに言うことができません。
Target = "_ blank"のアンカーではないため、ブロックされます。プログラムでポップアップを作成しています。
提供したコード例の後でこれを実行してください。
if (!child1) {
alert('You have a popup blocker enabled. Please allow popups for www.yourSite.com');
}
コードを試してください
var newWin = window.open(...);
if (newWin && newWin.top) {
// popup has opened
} else {
// popup has been blocked
}
Window.open()の代わりにtarget = "_blank"を使用してダミーの[フォーム]を作成することをお勧めします。
私はそれがうまくいくことを願っています。
よろしく。
PD:あなたのサイトを「信頼できるサイト」に追加することは選択肢ではないと思いますよね?
私はすなわち10/11でアイデアを持っています:
let win = window.open();
setTimeout(function(){
win.customParam = 'xxxx';
});
winでは、タイマーまたはループを使用してウィンドウのオンロード後にcustomParamを取得できます。