as3 打開窗口類

 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

相關文章
相關標籤/搜索