- - PR -
WindowsXP SP2のポップアップブロックの回避方法
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2005-05-11 11:57
SP2からポップアップブロックという機能が追加されていますが、この機能で少々頭を悩まされております。
ポップアップブロックの機能自体は、サイトを訪れたときに自動的に起動するポップアップをブロックする機能なのですが、ブロックされた場合はIEのアドレスバーの下部にメッセージが表示されます。 IEの設定等を変更することなく、このメッセージが出ないようにJavaScriptでダイアログを起動したいと考えています。 ポップアップのブロックが発生するのは、下記のようにポップアップを起動した場合に発生してしまいます。 親画面がある状態で下記のようにポップアップを2つ起動します。 1.ボタン押下によるshowModalDialog()でポップアップウィンドウを起動 ↓ 2.起動したポップアップからボタン押下によるwindow.open()で、別のポップアップを起動 すると、2のポップアップを起動しようとした時点で、親画面(モーダルで起動したポップアップ上ではなく)にポップアップをブロックした情報バーが現れます。 マイクロソフトのサイトを確認しますと、自動で起動したポップアップはブロックされるとあるのですが、すべて手動で起動していますので、なぜポップアップがブロックされるかがわかりません。 ウィンドウは、親画面⇒ポップアップ(モーダル)⇒ポップアップで起動されます。 ご存知の方がいらっしゃれば、ご指摘いただければ幸いです。 よろしくお願いいたします。 |
|
投稿日時: 2005-05-11 12:50
こんにちは。
解決策ではないので、がっかりさせてしまうかもしれませんが、 window.open()で起動するのは、「自動」とみなされるのではないですか? onLoadのイベントハンドラに、window.open()と書いて、自動起動することも出来ますし。 検証していないので、なんとも言えませんけど。 「IE等の設定を変えずにJavaScriptで」は難しそうですね。 そもそも、それ(JavaScriptによる自動制御?)をさせないための機能ですから。 どう思われますか? |
|
投稿日時: 2005-05-11 14:24
お返事ありがとうございます。
最初は、私もそう思っていたのですが、検証をしている内に特定の条件でブロックされるみたいです。 ボタン押下で普通にポップアップをwindow.open()で起動しているのですが、その場合はブロックされずにポップアップが起動します。 基本的にonClickでのwindow.openやshowModalDialog()、showModelessDialog()では、ぽぷあっぷはブロックされませんでした。 少し別件なのですが、window.open()でも、マウスでボタンを押下した場合はブロックされずに、スペースキーでポップアップを起動しようとすると、ポップアップがブロックされてしまいます。 セキュリティの設定をご連絡し忘れておりましたので、別途下記に記載させていただきます。 中:ほとんどの自動ポップアップをブロックする |
|
投稿日時: 2005-05-11 22:56
うるさいバナーとかを表示させないためのブロック機能ですから、簡単には回避できないようになっているのではないでしょうか?
また、その意図を考えると、なんらかのトリックで回避する方法をみつけたとしても、将来的には修正されてまたうまく動かなくなってしまうのではないかと思います。 |
|
投稿日時: 2005-05-11 23:23
接続先と接続元は、どのようなネットワークで繋がっているんでしょうか?
ポップアップブロックは、インターネットゾーンもしくは制限つきサイトゾーンのみで 働く機能になります。 接続元と接続先がLANで接続されている環境であれば、本来はイントラネットゾーンと 判定され、ポップアップブロック機能は動作しません。 ただし、同じLANであっても、セグメントが異なる場合は、 インターネットゾーンと判定されてしまい、意図せずポップアップブロックが 働いてしまう、というケースは考えられます。 http://www.atmarkit.co.jp/fwin2k/experiments/ieproxy/ieproxy_01.html その場合、proxy自動構成ファイルを使ったProxy指定に変更するとか、 接続先のネットワークをイントラネットゾーンに含まれるサイトとして追加するか (ActiveDirectory導入済みならグループポリシーで配布可能)、 いずれかの設定で回避可能です。 接続元マシンのその辺の設定を変更できないサイト、要するに 接続元と接続先がインターネットを介して接続されており、 接続元に対して接続先に強制力が一切無い場合、 この仕様を考慮して、Webサイトの設計変更を検討してください。 # それ以外で対応できるなら、回避可能なセキュリティ実装になるのは自明ですよね。 |
|
投稿日時: 2005-05-11 23:52
こういう情報もあるので、ご参考までに。
・Windows XP Service Pack 2 への対応に向けた Web サイトの最適化 http://www.microsoft.com/japan/msdn/windows/windowsxp/xpsp2web.asp |
|
投稿日時: 2005-05-20 14:25
ご意見頂戴して、なかなか返信できずに申し訳ありませんでした
結局解決はしませんでしたが、原因はわかりました。 showModalDialog()で起動していた為、IEの仕様にダイアログから起動されたポップアップはセッションCookieが正しく引き継がれないという仕様があった為に、showModalDialogで起動した親ウィンドウのオブジェクトを利用してダイアログからポップアップを起動していたのですが、これがブロックの原因でした。 この為に、ダイアログの呼び出し元のウィンドウが【自動】(知らない間にといった方がしっくりきますが)で、ポップアップが起動されたとみなした為に、ポップアップがブロックされていました。 しょうがなく、IEにブロックの回避対象としてドメインを追加することで、対策として閉じることにしました。 いろいろなご意見を頂戴しましてありがとうございました。 |
1