SP2導入トラブル: Popup(ポプアップ)ブロック機能
抜群の検定試験合格率! 日本語教師を育てる実績のプログラム

次々とウインドウが開き、閉じても閉じても開いていくサイトにはまってしまい往生した男性ユーザーの方も多いかもしれません。実際、こういう行儀の悪いJavascriptを書くのはアダルトサイトぐらいなのですが、そこまで行儀は悪くなくても、鬱陶しいポップアップ広告(別ウインドウによる広告表示)を強制表示するサイトも少なくありませんでした。

そこで、今までは、中級・上級者の方は各自でポップアップ対策のためのプログラムをインストールしていました。一方で、初心者には敷居が高かったのも事実です。しかし、最近ではGoogleツールバーにPopup Blockerの機能が付きましたし、
Yahoo! Japanのツールバーにも「ポップアップブロッカー」が搭載されました。そして、今回Windows XP SP2にこのポップアップをブロックする機能が搭載されました。上のような警告メッセージが表示されたのを見て、最初はびっくりした人もいることでしょう。これがSP2の新機能によって「ポップアップ」をブロックした際に表示されるものです。
単にアダルトサイトのポップアップ攻撃やブラクラサイトでポップアップが表示されなかったり、無料ホームページスペースで広告が別ウインドウに表示されないというだけなら大変ありがたい機能なのですが、実際には、表示されないと困る場合があります。代表的なものはインターネットバンキングやオンライン証券でログイン画面などが表示されないケースです。
マイクロソフト社のサポート技術情報:
●
ポップアップ ブロックによりログイン画面が表示されない
http://support.microsoft.com/kb/884091/JA/
で解説されているようなケースです。このような場合には、
「ポップアップがブロックされました。このポップアップまたは追加オプションを参照するには、ここをクリックしてください。」をクリックして、「ポップアップを一時的に許可」もしくは「このサイトのポップアップを常に許可する」をクリックします。
以上は、あくまでもユーザー側の対処法です。しかし、実際には、このような対処法をユーザーに強要することなく、サイト運営者側の努力で、スムーズに別ウインドウを表示させることは可能なのです。ユーザーがボタンなどをクリックした結果、別ウインドウが開く場合がありますが、この場合の別ウインドウはブロック対象の「ポップアップ」ではありません。ブロックされません。
ですから、「戻るボタン」を表示させたくないという動機であれ、アドレスバーを隠したいという動機であれ、ウインドウサイズを固定したいという動機であれ、ユーザー側のアクションによって、window.openしてもらうのであれば、(ユーザーがデフォルト設定でInternet Explorerを利用している限り
※)何の問題もないのです。
(※ 実際には、Internet Explorerのメニューの「ツール」→「インターネットオプション」→「プライバシー」→「ポップアップ ブロック」で「設定」ボタンをクリックして、「フィルタ レベル」を「高:すべてのポップアップをブロックする(Ctlキーでポップアップを表示できます)」にしている場合、ユーザー側のクリックアクションがあった場合でさえ、ポップアップはブロックされます。しかし、ユーザー側でわざわざデフォルト設定を変更しない限り、このようなことはないわけですから、仮にユーザー側でこの設定にしている場合に問題が発生したとしても、それは「自己責任」ということで構わないでしょう。←あくまでも個人的意見です。)
この辺りをちゃんと理解していないと、「Javascriptの『window.open』が全く使えなくなった」と慌ててしまうことになります。
実際には、ブロックされるのは、ごく限られたケースであり、
- HTMLソースの中のヘッダー領域(<head>〜</head>)にwindow.openで別ウインドウが開くようにしている場合。(ファイル本体読み込み完了を待たずに、別ウインドウを表示させるパターン。ポップアップ・ウインドウからポップアップ・ウインドウを起動させる場合にもよく使用されるパターンですね。)

- Bodyタグの中に「onLoad」イベントを仕込んでいる場合。(ファイル本体読み込み時に、別ウインドウを表示させる。)

- Bodyタグの中に「onunload」イベントを仕込んでいる場合。(ユーザーが別のページに移動した場合に、別ウインドウを表示させる仕組み。)

- Javascriptの自動クリック機能を利用して、ボタンやテキストリンクなどを自動クリックすることにより、window.openさせようとする行為。


※ 詳細はサンプルのページを表示させて、右クリック→「ソースの表示」を行ってご確認ください。
などです。onClickイベントが発生したときなど、ユーザーが何らかのアクションを起こした時にJavasriptのwindow.open→ポップアップウインドウ表示させることは、(ユーザーがデフォルトの設定を使っている限りは
※)問題ないわけです。ためしに、
ここをクリックしてみてください。「ここをクリック」の部分のソースは、
「<a href="http://www.kaiteki-net.com" onClick="window.open(this.href,'popup','width=800,height=600,left=0,top=0,scrollbars=1');return false;"><b>ここをクリック</b></b></a>」のようになっています。
また、onLoadイベントやonUnloadイベントを利用する場合でも、「window.open()」ではなく、「createPopup()」や「alert」を呼び出す分には問題がないのです。
この辺りの事情は、マイクロソフト社のサポート技術情報:
●
Windows XP Service Pack 2 への対応に向けた Web サイトの最適化
http://www.microsoft.com/japan/msdn/windows/windowsxp/xpsp2web.asp#xpsp_topic3
に詳しく掲載されています。
ですから、ポップアップウインドウがブロックされるようになったといっても、WEBサイト構築者はいくらでも代替案により作り直すことが可能なはずです。ユーザーが混乱しないような作り方が必要でしょう。
なお、
ポプアップウインドウ表示に関して、SP2により変更になった点が他に3つほどあります。
1.ステータスバーは強制表示になりました。status=0としても、必ず表示されます。
※ ただし、ステータスバーに表示される情報は必ずしも正しくないことを、ユーザーは知っておくべきです。
2. アドレス欄(URL)を隠している場合は、下記のようにInternet Explorerのページタイトル表示欄に、そのサイトのドメイン名がページタイトルの前に表示されます。

3.fullscreenモードの指定で表示されるものは、今までのものと違います。SP2では、window.open('http://www.example.com','windowsname','fullscreen=yes')としても、必ずタイトルバー及びステータスバーは表示されます。フルスクリーンが表示されて消し方に困ることはありません。今までは、「Ctrl」+「alt」+「delete」でそのウインドウを指定して、無理やり消していた人も多いはずです。
fullscreenモードのサンプル
このように、Windows XP SP2ではセキュリティ的に大幅に強化されています。これから増えていくことが予想されているフィッシング詐欺(Phishing。有名企業のサイトに成りすました詐欺行為。)に対応する重要な機能が満載です。たしかに、WEB開発者にとって変更を強いられるところもあり、私も一開発者としてひとごとではありませんが、これは時代の流れかと思います。実際、いつもonLoadイベントによる広告表示をしていた某サイトはSP2公開後、その仕様を止めたのを知っています。警告メッセージが表示されれば、戸惑ってしまうユーザーも少なくないはずであり、できるだけ警告メッセージが表示されないようなサイト設計を心がけるのは、WEB開発者として当然の姿勢だと個人的には思います。
次のページでは、強化された「Windows ファイアウォールの影響と対応策」についてご紹介します。



