web-dev-qa-db-ja.com

Javascriptwindow.openはIEポップアップブロッカーによってブロックされています

誰か助けてもらえますか、ブロックされているポップアップがあります。これは、誰かが私のサイトの[画像を印刷]をクリックしたために作成されたポップアップです。

ポップアップが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);
12
mark smith

問題は、現在のホスト内のどこかに移動している場合にのみ、openがウィンドウへの参照を返すことです。ホスト内にないabout:blankに移動しています。

Blank.htmファイルをサイトに追加して、代わりに開いてみてください。 document.writeが許可され、ドキュメントが書き込み用に開かれないかどうかはまだわかりませんが、既存の空白のドキュメントのDOMを操作できる可能性があります。

13
AnthonyWJones

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()を呼び出す前に関数を呼び出す関数のレベルが多すぎます。あなたの正確な実装を見ずに、これがあなたが抱えている問題であるかどうかを私はあなたに言うことができません。

4
Grant Wagner

Target = "_ blank"のアンカーではないため、ブロックされます。プログラムでポップアップを作成しています。

提供したコード例の後でこれを実行してください。

if (!child1) {
      alert('You have a popup blocker enabled. Please allow popups for www.yourSite.com');
}
3
nickytonline

コードを試してください

var newWin = window.open(...);
if (newWin && newWin.top) {
    // popup has opened
} else {
    // popup has been blocked
}
1
xem tivi online

Window.open()の代わりにtarget = "_blank"を使用してダミーの[フォーム]を作成することをお勧めします。

私はそれがうまくいくことを願っています。

よろしく。

PD:あなたのサイトを「信頼できるサイト」に追加することは選択肢ではないと思いますよね?

0
ATorras

私はすなわち10/11でアイデアを持っています:

let win = window.open();
setTimeout(function(){
    win.customParam = 'xxxx';
});

winでは、タイマーまたはループを使用してウィンドウのオンロード後にcustomParamを取得できます。

0
Hou Feng