Javascript 对Flash的外部接口调用在IE9中不起作用

Javascript 对Flash的外部接口调用在IE9中不起作用,javascript,flash,internet-explorer-9,Javascript,Flash,Internet Explorer 9,我们在网页中嵌入了一个flash游戏(使用SWFObject v2.2),网页上有一些链接可以通过以下方式调用flash: window.document["flashObjectId"].flashMethod(); 这在我们尝试过的所有浏览器(包括IE7和IE8)上都非常有效,但是在IE9上它会生成以下错误:“SCRIPT438:Object不支持此属性或方法” 它确实在兼容模式下工作,所以我尝试添加一个meta标签,告诉IE9默认情况下使用兼容模式,但这不起作用,因为我们的游戏在Face

我们在网页中嵌入了一个flash游戏(使用SWFObject v2.2),网页上有一些链接可以通过以下方式调用flash:

window.document["flashObjectId"].flashMethod();
这在我们尝试过的所有浏览器(包括IE7和IE8)上都非常有效,但是在IE9上它会生成以下错误:“SCRIPT438:Object不支持此属性或方法”

它确实在兼容模式下工作,所以我尝试添加一个meta标签,告诉IE9默认情况下使用兼容模式,但这不起作用,因为我们的游戏在Facebook的IFrame中运行


我尝试过在Javascript中以各种方式引用flash对象,但在IE9中总是收到相同的错误消息。如果有人有任何信息可以帮助我在IE9中实现这一点,我将不胜感激

我也有同样的问题,但我没有使用SWFObject或AC_RunActiveContent.js


我的解决方案是:用HTML和AC_RunActiveContent.js发布swf。然后,我用从flash导出的代码替换了当前代码,它开始工作。

这可能是您出现问题的原因,这里也提供了解决方案:


您对此有何看法

function getFlashObject(movieName) {
    if (navigator.appName.indexOf("Microsoft") != -1) {
        //alert("IE");
        if (typeof (window[movieName].flashMethod) == 'function') {
            // < IE9
            movie = window[movieName];
        }
        else if (typeof (document[movieName].flashMethod) == 'function') {
            // >= IE9
            movie = document[movieName];
        }
    }
    else {
        // NON IE
        movie = document[movieName];
    }

    return ((movie) ? true : false);
}

$(document).ready(function () {
    if(getFlashObject("flashObjectId")) {
        movie.flashMethod();
    } else {
        alert("Failed to initialize");
    }
}
函数getFlashObject(movieName){ if(navigator.appName.indexOf(“Microsoft”)!=-1){ //警惕(“IE”); if(typeof(window[movieName].flashMethod)='function'){ //=IE9 movie=文档[movieName]; } } 否则{ //非IE movie=文档[movieName]; } 返回((电影)?真:假); } $(文档).ready(函数(){ if(getFlashObject(“flashObjectId”)){ movie.flashMethod(); }否则{ 警报(“初始化失败”); } } 另请参见