Creazy!

WEBエンジニア・ヤガーのテック・ガジェットブログ

JavaScript 小技集

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

投稿日:


ものすごく今更な話しかもしれないけど、最近、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 では同じウィンドウ内で画面遷移しますので、遷移先の画面がポップアップを前提に作られていると(サイズ固定されてたり閉じるボタンがあったり)この関数はあまりよろしくないかもしれません。用途に合わせて使って下さい。

まとめ

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

-JavaScript, 小技集

執筆者:


comment

メールアドレスが公開されることはありません。

関連記事

no image

PhotumblrでTumblrの画像をブログパーツにしてみる

だいぶ前にTumblrの画像を抜き出すPipesを作ったんだけど、今日はそれを使ってブログパーツを作ってみます。 元ネタはこちらのエントリーをお読みください。(で、省略w) ・「Photumblr」T …

表紙で探すプログラマーっぽい写真

ブログデザイン勉強会 第3回を経て、このブログを的確に表現できる写真選びを進めています。が、ハッキリ言っていままで撮りためているストックの中には無いんじゃないかと思っています。ボクがよくカメラを向ける …

TumblrにOGP設定してみた

【2011/06/21:追記】 あまりにも適当に書きすぎて分かりにくかったのでサンプルコードの中で差し替えが必要な部分について説明加筆しました。 メインブログのMTにOGP設定をしたのが良いキッカケに …

no image

第2回:<IMG>タグに関わる基本的な事

前回は画像にborderで装飾を付けるサンプルを書きましたが、今回は順番が前後するかもしれませんがもうちょっと基本的なルールについて記述します。

no image

nslookupをPHPで実装する簡単なサンプル

唐突な思い付きネタですw nslookupはDNSにドメイン情報を問い合わせるためのコマンドで、IPアドレスからホスト名を取得したり、ホスト名からIPアドレスを取得したりできる仕組みです。 すでに、W …

スポンサードリンク

スポンサードリンク