Internet Explorer中的Flash v11.8.800.168函数调用失败

时间:2013-09-27 16:44:39

标签: 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>"));
}

此时,我检查了arguments变量,它包含了人们期望的XML。下一步之后,我明白了:

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

此时调试器已经处于捕获状态,还有一步将代码转换为“&lt; undefined /&gt;”部分,我可以看到 e 预期的对象

我尝试了什么:

  • 没有SWFObject的静态实现。这有效。但是Firefox不能正确处理XML(而且它似乎与IE一样)
  • 升级到SWFObject 2.2。使用动态实现它仍然失败。使用静态实现它适用于IE但不适用于Firefox

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

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

1 个答案:

答案 0 :(得分:0)

这是由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