javascript - Flash v11.8.800.168 函数调用在 Internet Explorer 中失败

标签 javascript flash internet-explorer firefox

公司最近升级到 Flash v11.8.800.168,使用 SWFObject (1.1) 加载的 Flash 影片在 Internet Explorer 中无法正常工作(Firefox 工作正常)。该影片是使用 jquery document.ready 方法动态加载的,使用“new SWFObject(...); so.write("ID")”方法(同样是 SWFObject 1.1)。\

加载时的影片调用 JavaScript 函数(使用服务器脚本动态构建)。经调试器检查,该函数被正确调用。 JavaScript 函数调用 Flash 影片中的方法,向其传递一些 XML(用于呈现一些用户和导航项)。

类似这样的事情:

function calledFromFlash() {
 document.getElementById("FlashMovie").renderUsingXml('<?xml version 1.0"?><lotsofxml></lotsofxml>');
}

正如我所说,这一切在 Firefox 和新的 Flash 版本中仍然有效。

当我使用 IE 调试器单步执行上述函数时,我得到以下步骤:

function anonymous() {
    return eval(this.CallFunction("<invoke name=\"renderUsingXml\" returntype=\"javascript\">" + __flash__argumentsToXML(arguments, 0) + "</invoke>"));
}

此时,我检查了参数变量,它包含了我们所期望的 XML。下一步进入后,我得到这个:

try { __flash__toXML(calledFromFlash(undefined)); } catch (e) { "<undefined/>"; }

此时,调试器已经开始捕获,但又一步将代码放入“”部分,我可以看到 eObject Expected

我尝试过的:

  • 没有 SWFObject 的静态实现。这有效。但是 Firefox 无法正确处理 XML(这似乎是与 IE 相同的问题)
  • 升级到 SWFObject 2.2。使用动态实现它仍然失败。使用静态实现,它可以在 IE 中运行,但不能在 Firefox 中运行

这不是我的 Flash 电影,来源是......好吧,我不知道。写这篇文章的人已经离开公司了。也就是说,这似乎是一个疯狂的问题。

我建议的修复方法只是对 Firefox 使用 SWFObject,对 IE 使用静态实现,但我真的想知道出了什么问题。

最佳答案

这是由 Flash Player 11.8.800.168 中的错误引起的。它已在 11.8.800.175 中修复。

错误修复:

3630443 - [External][Windows][IE] ExternalInterface.call() method with non-ASCII text as a parameter corrupts the characters on the Javascript side

关于javascript - Flash v11.8.800.168 函数调用在 Internet Explorer 中失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19056018/

相关文章:

javascript - graphql-JS Express 无法解析字段

flash - 使用 MXMLC 从命令行编译 ActionScript

apache-flex - 何时扩展 EventDispatcher

actionscript-3 - 画一条线: is there exists a limits of thickness in Graphics. lineStyle()?

css - IE友好的CSS框架

php - 如何在没有局部变量的情况下重新设计这段 PHP 代码?

javascript - 向下滚动时调整导航栏 Logo 的大小,Javascript 不起作用

jQuery 循环 IE6/7 链接不起作用?

javascript - 使用ajax加载Javascript时出错

IE 中类似元素的 CSS