package FlashCode.utils{ import flash.display.Sprite; import flash.net.URLRequest; import flash.net.navigateToURL; import flash.external.ExternalInterface; public class openWindow { public function openWindow(url:String, window:String="_blank", features:String=""){ var WINDOW_OPEN_FUNCTION:String = "window.open"; var myURL:URLRequest = new URLRequest(url); var browserName:String = getBrowserName(); if(getBrowserName() == "Firefox"){ ExternalInterface.call(WINDOW_OPEN_FUNCTION, url, window, features); } //If IE, else if(browserName == "IE"){ ExternalInterface.call(WINDOW_OPEN_FUNCTION, url, window, features); //ExternalInterface.call("function setWMWindow() {window.open('" + url + "');}"); } //If Safari else if(browserName == "Safari"){ navigateToURL(myURL, window); } //If Opera else if(browserName == "Opera"){ navigateToURL(myURL, window); } else { navigateToURL(myURL, window); } /*Alternate methodology... var popSuccess:Boolean = ExternalInterface.call(WINDOW_OPEN_FUNCTION, url, window, features); if(popSuccess == false){ navigateToURL(myURL, window); }*/ } private function getBrowserName():String{ var browser:String; //Uses external interface to reach out to browser and grab browser useragent info. var browserAgent:String = ExternalInterface.call("function getBrowser(){return navigator.userAgent;}"); // Debug.text += "Browser Info: [" + browserAgent + "]"; //Determines brand of browser using a find index. If not found indexOf returns (-1). if(browserAgent != null && browserAgent.indexOf("Firefox") >= 0) { browser = "Firefox"; } else if(browserAgent != null && browserAgent.indexOf("Safari") >= 0){ browser = "Safari"; } else if(browserAgent != null && browserAgent.indexOf("MSIE") >= 0){ browser = "IE"; } else if(browserAgent != null && browserAgent.indexOf("Opera") >= 0){ browser = "Opera"; } else { browser = "Undefined"; } return browser; } } }
在as2的時代,只有onRelease下的getURL纔會被認爲是一次完整的點擊,onPress就會被攔截瀏覽器
到了navigateToURL的時代,即使你監聽一個MouseEvent.CLICK事件,他也會被攔截,緣由我如今也不知道,誰知道的話能夠跟帖url
那麼怎麼解決as3彈出一個_blank不被攔截呢,3個條件spa
1.判斷瀏覽器的版本,若是是firefox和其餘什麼opera啥的就直接navigateToURL,若是是IE的話就調用window.open
2.必須監聽MouseEvent.CLICK事件,若是是MouseEvent.DOWN啥的我就不敢保證了
3.wmode屬性必須設置成opaque,Transparent的話我沒試過,你們能夠試試,反正window確定不行.net
這3個條件知足了,才能保證彈出的新頁面不被攔截!!!!!!!!!!firefox