6

ポップアップ ブロッカーが有効になっているかどうかを判断する良い方法はありますか? 残念ながら、全体に大量のポップアップがある Web アプリケーションを維持する必要があり、ユーザーがポップアップ ブロッカーを有効にしているかどうかを確認する必要があります。

これを行う唯一の方法は、javascript からウィンドウを開き、ウィンドウが開いているかどうかを確認して、ブロッカーが有効になっているかどうかを確認してから、すぐに閉じることです。

これを有効にしていないユーザーは、ウィンドウが開いてすぐに閉じるときに画面に小さなフラッシュが表示されるため、これは少し面倒です。

これを達成するための他の目立たない方法はありますか?

4

5 に答える 5

8

Javascript を使用してポップアップ ブロッカーを検出するを参照してください。

基本的に、「window.open」メソッドが新しく開いたウィンドウへのハンドルを返すかどうかを確認します。

次のようになります。

var mine = window.open('','','width=1,height=1,left=0,top=0,scrollbars=no');
if(mine)
    var popUpsBlocked = false
else
    var popUpsBlocked = true
mine.close()
于 2008-10-30T14:02:57.377 に答える
3

他の人が言っているように、あなたはそれを試して見る必要がありますが、結果のウィンドウオブジェクトが「偽物」でないことをチェックすることはすべてのブラウザにとって十分ではありません。

ポップアップがブロックされてもOperaはオブジェクトを返すWindowため、オブジェクトを十分に調べて、実際のウィンドウかどうかを判断する必要があります。

var popup = window.open(/* ... */);
var popupBlocked = (!popup || typeof popup.document.getElementById == "undefined");
于 2008-10-30T15:53:41.803 に答える
2

他の人がコメントしているように、確実に見つける唯一の方法は試してみることです.

ただし、「ポップアップ ブロッカーがインストールされているか」という質問に対するおおよその答えは、最近では「はい」です。最近のブラウザはすべてデフォルトでポップアップをブロックするため、これに適切に対処するようにアプリを設計することをお勧めします。つまり、ユーザーの操作 (通常は onclick) に反応する場合を除き、window.open を試みないでください。問題はありません。

于 2008-10-30T14:33:36.160 に答える
1

ポップアップ ブロッカーは JS で問い合わせることができるものを何も追加しないため、ウィンドウを開こうとせずにこれを検出する方法はないと思います。

于 2008-10-30T13:57:40.053 に答える
0

リンクのクリックなど、ユーザーのアクションに応じて開かれるポップアップは、ポップアップブロッカーによってブロックされるべきではありません。

于 2008-10-30T14:40:53.993 に答える