未从同一vhost加载时出现Flash重定向问题

时间:2010-02-11 00:19:28

标签: flash crossdomain.xml clicktag

我们有一个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

3 个答案:

答案 0 :(得分:1)

尝试在包含HTML的对象和嵌入代码中设置allowScriptAccessalways

Flash Player的recent versions默认值为“sameDomain”,它解释了您当前的行为。


对于您的修改,获取更多信息可能会有所帮助,但您可能需要使用_root_level0访问您的参数,而不是直接如上所述。请参阅Adobe的docs on this problem_root的说明。


根据您的嵌入代码,我仍然认为查看_root可能值得您花些时间。

您的对象标签有点不标准,因此可能存在一些问题:

  1. 您好像Josh在此提出了案例问题:clickTag vs clickTAG
  2. 将参数添加到data属性网址有帮助吗?
  3. 也许尝试Adobe suggested标签会有帮助吗?
  4. 另外,将文件打包为SWC而不是SWF有什么意义?
  5. 如果您可以控制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; }

免责声明:尚未测试过。 ; - )