swfからwindow.open

ちょこちょこ使う機会があるのでメモ。
ポップアップブロックは完璧ではないです。

This site requires flash player 9 or later.

Get Adobe Flash player
package util
{
	import flash.external.ExternalInterface;
	import flash.net.navigateToURL;
	import flash.net.URLRequest;
	
	/**
	 * ウィンドウオープン
	 * 
	 */
	public class WindowOpener
	{
		//----------------------------------
		//  variable
		//----------------------------------
		public static const IE:String = "ie";
		public static const FIREFOX:String = "firefox";
		public static const CHROME:String = "chrome";
		public static const SAFARI:String = "safari";
		public static const OPERA:String = "opera";
		
		
		//--------------------------------------------------------------------------
		//
		//  method
		//
		//--------------------------------------------------------------------------
		
		/**
		 * ウィンドウを開く
		 * 
		 * @param	url - 新しく開かれるウィンドウでロードされるURL。
		 * @param	windowName - 新しいウィンドウの名前。
		 * @param	features - オプション。
		 */
		public static function open(url:String, windowName:String = "", features:String = ""):void
		{
			var browserType:String = WindowOpener.browserType();	//ブラウザの種類
			var href:String = new String();	//リンクurl
			
			href = url;
			if (browserType != WindowOpener.SAFARI && browserType != null && ExternalInterface.available)	ExternalInterface.call("window.open", href, windowName, features);
			else	navigateToURL(new URLRequest(href), windowName || "_blank");
		}
		
		/**
		 * ブラウザの種類を取得する
		 * 
		 * @return	ブラウザの種類
		 */
		public static function browserType():String
		{
			var agent:String = ExternalInterface.call('function(){return navigator.userAgent;}');	//jsのuserAgnetを取得
			var type:String;	//ブラウザの種類
			
			if(agent.indexOf("MSIE") >= 0)	type = IE;	//sleipnir, lunascape含む
			else if(agent.indexOf("Firefox") >= 0)	type = FIREFOX;
			else if(agent.indexOf("Chrome") >= 0)	type = CHROME;
			else if(agent.indexOf("Safari") >= 0)	type = SAFARI;
			else if(agent.indexOf("Opera") >= 0)	type = OPERA;
			
			return type;
		}
	}
	
}