折れた歯の治療3回目

2008年06月のランキング

JavaScriptのポップアップウィンドウ禁止しているブラウザへの代替処理

[JavaScript] 2008年07月02日 13:42

ものすごく今更な話しかもしれないけど、最近、IE・FirefoxはもちろんSafariやOperaを同時に起動していたりして気付いたんだけど、モダンブラウザにはポップアップブロック機能(別ウィンドウを開くのを禁止する機能)がついていて、しかもその設定がデフォルトでONになっていたりしますね。

なので、UI的に使いやすいからといって window.open を多様していたりすると、実際にはブラウザがブロックして表示されていなかったり、いちいちユーザがブロックを解除する設定をしないといけなかったりします。

もし、固定サイズのポップアップウィンドウを開くのが絶対条件でないのなら、ポップアップブロックしているブラウザ向けの処理を用意しておいた方が良さそうです。

ポップアップブロックを考慮したポップアップ関数

function openWindow( url, name, option ) {
    if ( !window.open( url, name, option ) ) {
        location.href = url;
    }
}

window.open はポップアップブロックなどでブロッカーなどによってウィンドウが開けなかった場合、null あるいは undefined(Safariの時) を返します。なので、window.open に失敗した場合に location.href で画面遷移させています。

location.href では同じウィンドウ内で画面遷移しますので、遷移先の画面がポップアップを前提に作られていると(サイズ固定されてたり閉じるボタンがあったり)この関数はあまりよろしくないかもしれません。用途に合わせて使って下さい。

まとめ

ポップアップブロックと言ってもただ全てのポップアップウィンドウを開かないというのではなくて、左クリックでユーザが能動的に起こしたイベントではポップアップ許可したりしているみたいなので、そこまで気にする必要はないかもしれません。

が、一応テクニックとしては覚えておいてもいいかなと思います。

コメント

コメントを投稿

トラックバック

このエントリへのトラックバックURL
http://creazy.net/mt-tb.cgi/620

Categories

Archives

Parts

中の人

スカウター

スカウター : creazy photograph ::: 写真と、WEBと、流行のネタを少々…。yagerは大体ここにいます。
 

feedmeter
あわせて読みたい

フィードメーター - creazy photograph
あわせて読みたい

Yahoo!ログール