2010-02-11 93 views
1

這是我用來繞過彈出窗口攔截器的類。在Flash中打開鏈接時繞過IE彈出窗口阻止程序?

這就是電話類功能

function linkHandler(e:MouseEvent):void{ 
popup.ChangePage(linksURLArray[e.currentTarget.name], "_self"); 
} 

這是類的功能。

package com.dbd.external { 
    import flash.external.ExternalInterface; 
    import flash.net.*; 
    public class PassPopup { 
     public function ChangePage(url:*, window:String = "_blank"):void { 
      var req:URLRequest = url is String ? new URLRequest(url) : url; 
      if (!ExternalInterface.available) { 
       navigateToURL(req, window); 
      } else { 
       var strUserAgent:String = String(ExternalInterface.call("function() {return navigator.userAgent;}")).toLowerCase(); 
       if (strUserAgent.indexOf("firefox") != -1 || (strUserAgent.indexOf("msie") != -1 && uint(strUserAgent.substr(strUserAgent.indexOf("msie") + 5, 3)) >= 7)) { 
        ExternalInterface.call("window.open", req.url, window); 
       } else { 
        navigateToURL(req, window); 
       } 
      } 
     } 
    } 

} 

我在本地工作,http://localhost/,並嘗試從外部鏈接到其他域。

回答

-1

一定要包含在你的AS代碼中。 ExternalInterface需要在執行HTML-SWF跨腳本時設置allowDomain,即使它在本地瀏覽器中也是如此。

System.security.allowDomain("*"); 

加上一定要加在您的Flash嵌入HTML

allowscriptaccess="always" 

下面如果不工作,然後添加一個crossdomain.xml的類似如下:

<?xml version="1.0"?> 
<!DOCTYPE cross-domain-policy SYSTEM "http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd"> 
<cross-domain-policy> 
<allow-access-from domain="*" /> 
</cross-domain-policy> 

並添加以下爲您的AS代碼:

System.security.loadPolicyFile("http://yourdomain.com/crossdomain.xml"); 
+0

我會把它放到我的主要AS類或Popup CLass中嗎? – DesignedByDave 2010-02-11 18:29:59

+0

我剛試過。它不起作用:( – DesignedByDave 2010-02-11 18:40:34

+0

把它放在主類 – 2010-02-11 18:48:00

相關問題