18

スタックオーバーフローで多くの問題を検索しましたが、ここ で重複している可能性がありますポップアップの検出

しかし、 Chromenot helped for meでのテスト中(v26.0.1410.64でテスト済み) 次のアプローチですが、
Worked in IE and Firefoxnot in Chrome

var popup = window.open(winPath,winName,winFeature,true);
 if (!popup || popup.closed || typeof popup.closed=='undefined'){
       //Worked For IE and Firefox
        alert("Popup Blocker is enabled! Please add this site to your exception list.");
        window.location.href = 'warning.html';
 } else {
        //Popup Allowed
        window.open('','_self');
        window.close();
} 

Chromeでも機能するより良いソリューションはありますか?

4

6 に答える 6

21

最後に、Stackoverflowのメンバーからの異なる回答を組み合わせることで成功し
ましたIE, Chrome & Firefox

var popup = window.open(winPath,winName,winFeature,true);
 setTimeout( function() {
    if(!popup || popup.outerHeight === 0) {
        //First Checking Condition Works For IE & Firefox
        //Second Checking Condition Works For Chrome
        alert("Popup Blocker is enabled! Please add this site to your exception list.");
         window.location.href = 'warning.html';
    } else {
        //Popup Blocker Is Disabled
        window.open('','_self');
        window.close();
    } 
}, 25);
于 2013-05-14T11:04:40.913 に答える
3

次のように try-catch を使用する方がはるかに効果的であることがわかりました。

var popup = window.open(winPath,winName,winFeature,true);
try {
    popup.focus();
} catch (e) {
    alert('popup blocked!');
}
于 2014-10-20T14:30:47.470 に答える
3

以下を試してください.. !!

var pop = window.open("about:blank", "new_window_123", "height=150,width=150");

// Detect pop blocker
setTimeout(function() {
if(!pop || pop.closed || pop.closed == "undefined" || pop == "undefined" || parseInt(pop.innerWidth) == 0 || pop.document.documentElement.clientWidth != 150 || pop.document.documentElement.clientHeight != 150){
pop && pop.close();
alert("Popups must be enabled.");
}else{
alert("Popups is enabled.");
pop && pop.close();
}}, 1000);

以下の質問を見てください

Chrome でブロックされたポップアップを検出する

Chrome でポップアップがブロックされているかどうかを検出するにはどうすればよいですか

Googleでそれはあなたをもっと助けます..

https://www.google.com/search?q=how+to+detect+a+blocked+popup+in+chrome

于 2013-05-14T09:07:52.467 に答える
0

これが「解決済み」であることはわかっていますが、この単純なコードは、Chrome で「Better Popup Blocker」拡張機能を検出するのに役立ちました。

  if (!window.print) {
    //display message to disable popup blocker
  } else {
    window.print();
  }
}

オッカムのカミソリ!それとも、何かが足りないので、これほど単純ではないでしょうか?

于 2013-06-30T21:22:51.970 に答える
0

以下のコードは、chrome、safari、firefox で動作します。これにはjqueryを使用しました。

var popupWindow = window.open("http://www.google.com","directories=no,height=100,width=100");

$(document).ready(function(e) {
    detectPopup();
    function detectPopup() {
    if(!popupWindow) {
        alert("popup will be blocked");

    } else {
        alert("popup will be shown");
        window.open('','_self');
        window.close();
    } 
}
});
于 2015-09-17T04:49:08.257 に答える
0

この方法を使用してjsからウィンドウを開き、Chromeによってブロックされていませんでした。 http://en.nisi.ro/blog/development/javascript/open-new-window-window-open-seen-chrome-popup/

于 2013-12-31T08:23:29.327 に答える