我的 Flash 应用程序中有几个按钮调用两个不同的 JavaScript 函数。它们适用于除 IE9 之外的所有浏览器(我没有尝试过更早的 IE)。我调用函数的代码是这样的:
ExternalInterface.call(
"myLovelyFunction",
string1, string2);
JS 中的代码如下所示:
function myLovelyFunction(string1, string2) {
window.open('https://twitter.com/share?url=http%3A%2F%2Fwww.mysite.com%2Fapage.php&via=atwitteraccount&text=Some%20text%22&related=atwitteraccount',
'windowname',
'height=290,width=510');
}
在 IE9 中,该函数什么都不做,但控制台会提示:
SCRIPT438: Object doesn't support property or method 'SetReturnValue'
index.php, line 1 character 1
第 1 行,字符 1 显然没有特别指向任何东西。
虽然控制台错误并没有消失,但我可以通过打开兼容性 View 使其正常工作。
关于 IE9 是否有任何原因导致此问题,更重要的是,我该如何解决此问题?
最佳答案
我也遇到了同样的问题。我正在使用以下代码:
<object type="application/x-shockwave-flash" data="/files/banners/64/64_300x250.swf" width="300" height="250">
<param name="movie" value="/files/banners/64/64_300x250.swf"/>
<param name="wmode" value="transparent"/>
</object>
我只是将 flash 嵌入了一个常规对象标签(没有 SWFObject 也没有嵌入回退)。我的 flash 文件通过 ExternalInterface 调用 JS 函数 window.open,如下所示:
ExternalInterface.call("window.open", url, target, features);
什么不起作用: 上面的链接建议将其更改为“document.open”,但没有用。还试图强制页面在 IE-8 模式下呈现没有工作。例如:
<meta http-equiv="X-UA-Compatible" content="IE=8" />
有效的方法:只需向对象标签添加“名称”和“id”即可解决问题。例如:
<object type="application/x-shockwave-flash" data="/files/banners/64/64_300x250.swf" width="300" height="250" name="flash_object" id="flash_object">
关于javascript - 为什么我在 IE9 中从 flash 调用 Javascript 会失败?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8190645/