FLASH (AS3.0)からポップアップ

はてなブックマーク

サイズ指定、かつブロックされないように。ブラウザのポップアップは何かと嫌われ者ですが、先方がそれでもとおっしゃるならしょうがない。
navigateToURL()だとIEでブロックされるのでExternalInterfaceを使ってJavaScriptでやるといい感じです。しかし「Safariだと開かないんだけど」とかいうことになったら処理を分岐させるしかないです。
こちらを参考にさせていただきました。
Safariのポップアップウインドウを開かない件です。

下の例は変数brouserAgentにユーザー情報を格納して、その中のブラウザ名を検出して分岐させています。SafariならnavigateToURLで、それ以外ならExternalInterface.callで。

import flash.external.*; 
var browserAgent = ExternalInterface.call ("function getBrowser(){return navigator.userAgent;}");
btn_mc.addEventListener(MouseEvent.CLICK,popup);
function popup(event:MouseEvent) {
	var url:String=new String();
	url="http://endlessblank.com/";
	if (browserAgent != null && browserAgent.indexOf ("Safari") >= 0) {
		var req:URLRequest=new URLRequest(url);
		navigateToURL(req,"_blank");
	} else {
		ExternalInterface.call("window.open", url, "_blank","scrollbars=yes,width=300,height=240");
	}
}

Safariではブラウザ側でポップアップさせない設定になっていると、ウインドウサイズ指定ありでポップアップさせることはできないっぽいです。一旦サイズ指定なし(navigateToURL)で別ウインドウで開き、開いた側のページにてJavaScriptでサイズを変えるというゴリ押しならば可能です。
Safariもサイズ指定できるようです。
SafariでもFlashからサイズ指定の新規ウィンドウをポップアップさせる - jp.ikekou.blog.Main

巷ではActionScript2.0と3.0が混在していたり、wmodeの設定、ブラウザのバージョン、OSによってポップアップの挙動が違うというケースがあり、今のところ「間違いない」方法はなさそうです。そもそもそもポップアップブロックを突破するというのはユーザビリテ(ry
こちらはFlex環境にて解説されていますが、いろいろな条件下で検証されています。サンプルページがとっても素敵。
Flexからポップアップウィンドウを出す - c9日記

トラックバック(0)

トラックバックURL: http://endlessblank.com/mt/mt-tb.cgi/9

コメント(4)

少なくとも、クリックアクションに伴う別ウィンドウ表示ぐらいは許してほしいなと思いますね。
にてもやはりポップアップの要望は多いので、いかにスムーズに解除させるか(?)みたいなところは悩ましいですね。

本当にそうですね。あとブラウザ間で仕様を統一して欲しい。。

FlashからPopUpで悩んでました。。。
おかげさまでできました。
どうもありがとうございました。

どういたしまして!お力になれて幸いです。

コメントする

  • RSS