公司最近升级到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 是预期的对象
我尝试了什么:
这不是我的flash电影,来源是......好吧,我不知道。写这篇文章的人离开了公司。也就是说,这似乎是一个疯狂的问题。
我提出的修复方法只是使用SWFObject for Firefox并使用IE的静态实现,但我真的想知道出了什么问题。
答案 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