1

javascriptコードによるポップアップブロッカーの検出に関する多くの投稿を読みましたが、それでも私が現在抱えている問題に対する答えを見つけることができませんでした。

問題は、ターゲットURLが外部Webサイトである場合、ブラウザ(IE8)がウィンドウオブジェクトへのアクセスを妨げる、つまり、ポップアップを開くことは許可されているにもかかわらず、javascriptコードwindow.open()がnullを返すことです。逆に、サイトのローカルページの場合、javascriptはウィンドウオブジェクトを返します。

したがって、インターネットオプションのどこかに、開いているウィンドウのハンドラーを取得できないようにするセキュリティ設定があるようです。その場合、JavaScriptでそれを検出する方法を知っている人はいますか?

私が使用しているコードは次のとおりであり、この状況を検出できません。

var popup = window.open("http://www.externalsite.com&param1=value1", "_blank", "");
if (!popup) {
alert('Cannot preview this page because pop-ups are blocked by your browser');
} else {
if (popup != null) { popup.focus(); }
}
4

2 に答える 2

1

次のコードは、IE8でテストしたときに機能します

function detectPopupBlocker() {
        var test = window.open(null,"","width=100,height=100");
        try {
                test.close();
                alert("Pop-ups not blocked.");
        } catch (e) {
                alert("Pop-ups blocked.");
        }
}

// Created by: Simon Willison
// http://simon.incutio.com/archive/2004/05/26/addLoadEvent
function addLoadEvent(func) {
  var oldonload = window.onload;
  if (typeof window.onload != 'function') {
    window.onload = func;
  } else {
    window.onload = function() {
      if (oldonload) {
        oldonload();
      }
      func();
    }
  }
}

addLoadEvent(detectPopupBlocker);

http://javascript.internet.com/snippets/popup-blocker-detection-2.htmlにあるコードはNickによって作成されたものではありません

于 2011-02-07T23:40:53.167 に答える
1

ゾーンと整合性レベルを超えるウィンドウを開くと(たとえば、中で実行されているイントラネットページが低で実行されているインターネットページを開く、または低で実行されているインターネットサイトが中で実行されている信頼済みサイトを開く)、これが発生する可能性があります。それはポップアップブロッカーとは何の関係もありません。

于 2011-02-08T00:00:40.317 に答える