【问题标题】:Flash redirect problem when not loaded from the same vhost未从同一虚拟主机加载时出现 Flash 重定向问题
【发布时间】:2011-01-15 12:44:42
【问题描述】:

我们有一个 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"&lt;param name="allowScriptAccess" value="always" /&gt;object 标记后,窗口打开,位置转到/undefined。想法?

编辑:根据要求,这是我们正在使用的实际对象/嵌入代码:

<object type="application/x-shockwave-flash" data="/files/2348.swc" width="300" height="250" class="ad" onclick="ad_click(169);">
<param name="movie" value="/files/2348.swc?clickTAG=http://www.google.com"/> 
<param value="high" name="quality"> 
<param value="#FFFFFF" name="bgcolor"> 
<param value="always" name="allowScriptAccess"> 
<param value="transparent" name="wmode">
</object> 

【问题讨论】:

  • 你是怎么做这个“重定向”的?
  • 为了您的编辑,我们需要更多关于如何填充 clickTag 的信息。当您说查询字符串时,是 HTML URL 还是 SWF URL?无论哪种方式,Flash 代码如何检索数据?

标签: flash crossdomain.xml clicktag


【解决方案1】:

尝试在对象中将allowScriptAccess 设置为always,并嵌入包含HTML 的标签。

Flash Player 的recent versions 的默认值是“sameDomain”,这说明了您当前的行为。


对于您的编辑,获取更多信息可能会有所帮助,但您可能需要使用_root_level0 访问您的参数,而不是像上面那样直接访问。请参阅 Adob​​e 的 docs on this problem 和对 _root 的描述。


根据您的嵌入代码,我仍然认为值得您花时间研究_root

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

  1. 您似乎有 Josh 在此处建议的案例问题:clickTag vs clickTAG
  2. 将参数添加到data 属性URL 是否有帮助?
  3. 也许尝试Adobe suggested 标签会有所帮助?
  4. 另外,将文件打包为 SWC 而不是 SWF 有什么意义?

如果您可以控制 SWF,您可以考虑直接访问 FlashVars

【讨论】:

    【解决方案2】:

    要回答关于未定义的问题的第二部分 - 点击标签区分大小写,请确保参数和变量匹配大小写,或者您可以添加以下 sn-p 以确保:

    on (release) {
       var myCT:String = clickTAG;
       if(myCT == ""){
          myCT = clickTag;
       } 
       if(myCT == ""){
          myCT = clicktag;
       } 
       getURL(myCT, "_blank"); 
    }
    

    【讨论】:

      【解决方案3】:

      也许您可以使用 Javascript 来进行实际的重定向。

      例如,从 AS3 代码中,使用 ExternalInterface 调用一个执行重定向的 JS 函数。

      import flash.external.ExternalInterface; var retval:int = ExternalInterface.call("redirect()", "@987654321@");

      然后在JS中:

      function redirect(url) { window.location = url; }

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

      【讨论】:

        猜你喜欢
        • 2022-06-18
        • 2013-05-16
        • 2019-04-16
        • 2013-02-05
        • 2011-08-23
        • 2017-09-15
        • 2017-01-20
        • 2012-02-06
        相关资源
        最近更新 更多