【问题标题】:Actionscript works when tested in flash, but not on html page?Actionscript 在 Flash 中测试时有效,但在 html 页面上无效?
【发布时间】:2012-02-29 13:59:02
【问题描述】:

我正在尝试为网站制作广告。当有人点击广告时,它应该将他们重定向到一个网站,并使用谷歌分析记录这次点击。

我已使用以下脚本完成此操作:

import flash.external.ExternalInterface;

movieClip_3.addEventListener(MouseEvent.CLICK, onClick);

function onClick(event:MouseEvent):void {

    trace("hi");

    ExternalInterface.call("console.log", "test");
    //ExternalInterface.call("_gaq._trackPageview", "/vpv/annoncer/[firmanavn.dk]");

    navigateToURL(new URLRequest("http://www.google.com"), "_blank");
}

当我使用 preview->flash 运行它并单击表面时,(那里有一个名为 movieClip_3 的大红色方块)它会打开网页。但是,当我尝试以 html 格式发布时,会显示大红色方块,但单击时没有任何反应。甚至没有console.log。我试过设置 allowscriptaccess = always 但这并没有改变任何东西。

你们能帮帮我吗?任何帮助表示赞赏。

【问题讨论】:

  • ExternalInterface.call("function(){console.log('test')}") 工作吗?
  • 试试ExternalInterface.call("javascript:console.log"
  • 当我在本地 Flash 中运行 Jeg "Hi" 时,它会被跟踪,但 console.log 没有以任何形式响应。

标签: html actionscript-3 flash add


【解决方案1】:

安全问题?

开发人员应在将所有 URL 传递给此之前验证它们 功能。

对于在浏览器中运行的本地内容,调用 navigateToURL() 指定“javascript:”伪协议的方法(通过 URLRequest 作为第一个参数传递的对象)仅在 SWF 文件和包含网页(如果有)在 本地信任的安全沙箱。有些浏览器不支持使用 带有 navigateToURL() 方法的 javascript 协议。相反,考虑 使用 ExternalInterface API 的 call() 方法调用 封闭 HTML 页面中的 JavaScript 方法。

来源:http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/net/package.html#navigateToURL()

编辑: 由于沙箱中不允许使用 javascript,您可以尝试使用 ExternalInterface:

ExternalInterface.call("javascript_functionname", "mypage.html");

在发布的参数中:

'allowScriptAccess', 'always',

您只能在您的服务器上而不是在本地进行测试。

【讨论】:

  • 我不知道如何确保脚本 swf 位于受信任的安全沙箱中?我正在用chrome测试这个,应该支持这个吗?我的意思是 navigateToUrl 功能是标准 sn-ps flash IDE 提供的一部分?不应该支持吗? ://
【解决方案2】:

我建议仔细检查安全设置(右键单击闪存容器-> 全局设置-> 高级-> 可信位置设置)。还要确保您的 html 文件包含您尝试执行的 javascript 函数,并在浏览器中查找被阻止的弹出通知。也许您只是不允许弹出窗口运行。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多