質問

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

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

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

これを達成するために他の控えめな方法はありますか?

役に立ちましたか?

解決

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()

他のヒント

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

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

var popup = window.open(/* ... */);
var popupBlocked = (!popup || typeof popup.document.getElementById == "undefined");

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

ただし、質問に対する適切なおおよその回答は、ポップアップブロックがインストールされていることです。最近、“はい”。最近のブラウザはすべてデフォルトでポップアップをブロックするため、これにうまく対応するようにアプリを設計する方が良いでしょう。つまり、ユーザーインタラクション(通常はonclick)に対する反応を除いてwindow.openを試行しないでください。大丈夫です。

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

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top