我们有一个Flash文件,它带有一个URL参数,可以在点击时重定向。当它从主域托管,并且SWF包含在主域的HTML中时,重定向可以正常工作。
但是,当它在辅助域上托管,并且SWF包含在主域的HTML中时,重定向不起作用。我已经在主域和辅助域中添加了crossdomain.xml
文件,认为这可能有所帮助。两个crossdomain.xml
文件的内容包含在下面。
我错过了什么?
的crossdomain.xml
<cross-domain-policy>
<allow-access-from domain="*"/>
</cross-domain-policy>
编辑:这是用于“重定向”的动作脚本。
动作
on (release) {
getURL(clickTag);
}
clickTag是我们通过查询字符串传递的参数。
编辑:将allowScriptAccess="always"
添加到嵌入代码后,<param name="allowScriptAccess" value="always" />
添加到object
标记后,窗口将打开,并且位置转到{{ 1}}。想法?
编辑:根据要求,这是我们正在使用的实际对象/嵌入代码:
/undefined
答案 0 :(得分:1)
尝试在包含HTML的对象和嵌入代码中设置allowScriptAccess
到always
。
Flash Player的recent versions默认值为“sameDomain”,它解释了您当前的行为。
对于您的修改,获取更多信息可能会有所帮助,但您可能需要使用_root
或_level0
访问您的参数,而不是直接如上所述。请参阅Adobe的docs on this problem和_root
的说明。
根据您的嵌入代码,我仍然认为查看_root
可能值得您花些时间。
您的对象标签有点不标准,因此可能存在一些问题:
clickTag
vs clickTAG
data
属性网址有帮助吗? 如果您可以控制SWF,可以考虑直接转到FlashVars。
答案 1 :(得分:0)
回答关于undefined的问题的第二部分 - click标签区分大小写,确保参数和变量匹配大小写,或者您可以添加以下代码段以确保:
on (release) {
var myCT:String = clickTAG;
if(myCT == ""){
myCT = clickTag;
}
if(myCT == ""){
myCT = clicktag;
}
getURL(myCT, "_blank");
}
答案 2 :(得分:0)
也许你可以使用Javascript来进行实际的重定向。
例如,从AS3代码中,使用ExternalInterface来调用执行重定向的JS函数。
import flash.external.ExternalInterface;
var retval:int = ExternalInterface.call("redirect()", "http://the_redirect_url/");
然后在JS:
function redirect(url) {
window.location = url;
}
免责声明:尚未测试过。 ; - )