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

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

関連記事

HTMLソースを表示するブックマークレット(GeSHiでシンタックスハイライト版)

似たようなブックマークレットが続きますが、ご容赦下さい。 先日作ったHTMLソース表示ブックマークレット(Yahoo!Pipes版)は、Pipes側の制限で、一部タグが見えなかったりして使い勝手が微妙 …

Safariでページを大回転させるブックマークレット

Safari限定ですが、WebKit transformationを使ってページの表示角度を変えられるんだそうです。 Ajaxianに出てた。Safariブラウザだけの機能。 -webkit-tran …

JavaScriptにおけるクリップボード操作の変遷:ZeroClipboardからモダンClipboard APIまで

Web開発において「テキストをコピーする」という機能は、今や当たり前の UI です。しかし、その裏側にある JavaScript のクリップボード操作は、セキュリティと利便性の間で激しい試行錯誤を繰り …

Ffmpegで複数動画ファイルを無劣化で結合したり、無劣化で切り出したりする

いつまで経ってもffmpegのコマンドが覚えられないヤガーです。 というわけで、今回もよく使うコマンドをご紹介、というか自分用メモ。 このごろイベントの撮影やライブ配信をしていて、固定カメラで動画を長 …

no image

第9回:閲覧しているサイトへのリンクタグを生成するブックマークレット

どうしてもっと早く気がつかなかったんだろう、と思うくらい便利なブックマークレットを思い付きました。既出かもしれないけど、公開しておきます。 ブログを書いていると、他のブログのエントリーへのリンクを貼っ …

スポンサードリンク

スポンサードリンク