Обойти блокировку всплывающих окон IE при открытии ссылок во флэш-памяти? - PullRequest
1 голос
/ 11 февраля 2010

Это класс, который я использую для обхода блокировщика всплывающих окон.

Это функция для вызова функции класса

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 Ответ

0 голосов
/ 11 февраля 2010

Обязательно включите в свой код AS. ExternalInterface требует, чтобы параметр allowDomain был установлен, когда выполняется перекрестный сценарий HTML-SWF, даже если он является локальным для вашего браузера.

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");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...