Safari でのポップアップウィンドウ対策
2009年8月18日 20:36
FLASH からポップアップウィンドウを開く際、ExternalInterface.call を使用するが、どうも Safari だとこれが利かないらしい。
そこで、Safari の場合のみ navigateToURL を使用して _blank でウィンドウを開くことにする。
しかしFLASHでは標準でブラウザ判定をすることができないので、JSProxy というライブラリを使用する。
コードはこんな感じ。
import com.rails2u.bridge.JSProxy; public function LinkBtn() { addEventListener(MouseEvent.CLICK, pageLink); } private function pageLink(e:MouseEvent):void { var browser:String = JSProxy.proxy.navigator.$userAgent; if (browser.search("Safari") == -1) { //Safariでない場合、固定ウィンドウを開く ExternalInterface.call("window.open", _url, "_blank", "width=820, height=520"); } else { //Safariの時は通常ウィンドウを開く navigateToURL( new URLRequest(_url), "_blank" ); } }
カテゴリー: programming
2 Comments
Leave a comment
おお、これちゃんと回避したんですね。某案件では、Safari向けにポップアップブロックをOFFにするように注意書きを書くことで、クライアントOKもらっちゃってました。このへん、Flash標準で回避してほしいですよねぇ。
コメント by tatzuro — 2009年8月20日 19:38
これ、わりと面倒ですよね。Flash標準での回避は自分も望みます。
コメント by littlepad — 2009年8月21日 12:11