web-dev-qa-db-ja.com

ブロックされたポップアップを許可したいのに、IE(7、8、9、10)でページ全体が更新されるのはなぜですか?

ポップアップウィンドウを開きたいボタンをクリックするだけでデータでいっぱいのフォーム全体に入力し、IEページ全体を更新する必要があるため、私を失うことほどイライラすることはありません- すべてフォームに入力しました。

どうして?

IEのポップアップブロッカーは、スクリプトがポップアップを開くことができないように、最初にページなどのソースを書き換えますか?ポップアップを許可するように指示したときにページを完全に更新する必要があるのはそのためですか?ポップアップを無効にするためにソースを変更せずに更新しますか?

IEページを更新せずにページからのポップアップを許可できることを伝える方法はありますか?

3

TL; DR:Webページは実際にはアプリケーションであり、開くことが予期されていないときにポップアップを開くと、未定義の状態が発生する可能性があるためです。


ポップアップはJavaScriptを使用して表示されます。スクリプトは、ポップアップウィンドウから何らかの反応を期待する場合があります。ブラウザがポップアップをブロックすると、適切なアクションを実行するために、問題が発生したことをスクリプトに通知する必要があります。 (または、スクリプト全体をキャンセルするだけです。この質問では重要ではありません)

後でそのポップアップを開くと、それを表示しようとしたスクリプトに反応したい場合があります。ただし、スクリプトの実行は終了し、アプリケーションは通常のアプリケーションフローでは入力できない状態になるため、アプリケーションが正しく処理できない可能性があります。何が起こる可能性がありますか?

  1. 何もありません。悪いことが起こらない可能性はありますが、確信は持てません。
  2. スクリプトが壊れて、Webページを更新するまで、またはCookieをクリアするまで、アプリケーションが使用できなくなる可能性があります。
  3. 予期しないことが発生し、セキュリティ上の欠陥が発生する可能性があります。

後でポップアップを開いた正確な結果をプログラムで予測することはできないため、IEは、何かを壊すのを防ぐだけです-Webページをリロードすると、スクリプトは再度処理されますが、popが使用されます-適切なタイミングでポップアップが表示されます。

7
gronostaj