2011-11-18 28 views
5

我在我的Flash应用程序中有几个按钮,它们调用两个不同的JavaScript函数。他们在除IE9之外的所有浏览器中工作(我还没有尝试过早期的IE)。我的代码中调用该函数是这样的:为什么我的电话从Flash到Javascript在IE9中失败?

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显然没有特别指向任何东西。

我可以通过打开兼容性视图来使其正常工作,尽管控制台错误不会消失。

有什么关于IE9导致这个,更重要的是,我该如何解决这个问题?

+2

看到你的实际代码而不是“这样的事情”会很有帮助。甚至可能链接到测试网站? –

+0

增加了js函数的完整体,尽管函数的主体似乎根本不重要。 – izb

+0

你碰巧在你的页面中有这样的'Foobar.SetReturnValue()'和一个ID为'Foobar'的HTML元素吗? – HoLyVieR

回答

6

我有这个同样的问题,也是。我用下面的代码:

<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> 

我只是嵌入一个普通的对象标签(不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"> 
+0

这个答案救了我几个小时,处理Internet Explorer 11.我在5分钟内解决了这个问题,非常感谢! –