Javascript Swfobject.js库的getFlashPlayerVersion()函数工作不正常

Javascript Swfobject.js库的getFlashPlayerVersion()函数工作不正常,javascript,internet-explorer,flash,swfobject,Javascript,Internet Explorer,Flash,Swfobject,当我在IE11上使用swfobject.getFlashPlayerVersion时,flash版本比当前的15.0.0旧,结果总是得到0.0.0。对于版本15,它可以正常工作 我已经用FF上的flash播放器插件和IE上的active x对它进行了测试。用Firefox,一切都正常。问题3中指出,某些版本可能给出不正确的结果,但没有提到返回0.0.0,而且我测试了flash player版本9、10、10.2、10.3、11.3和13,IE中的结果始终相同 我真的需要在IE中安装正确版本的fl

当我在IE11上使用swfobject.getFlashPlayerVersion时,flash版本比当前的15.0.0旧,结果总是得到0.0.0。对于版本15,它可以正常工作

我已经用FF上的flash播放器插件和IE上的active x对它进行了测试。用Firefox,一切都正常。问题3中指出,某些版本可能给出不正确的结果,但没有提到返回0.0.0,而且我测试了flash player版本9、10、10.2、10.3、11.3和13,IE中的结果始终相同

我真的需要在IE中安装正确版本的flash player。有什么解决方案吗?如何可靠地获得正确的flash player版本,还有其他选择吗

编辑:有一个问题是swfobject如何查找版本。这是代码的一部分:

if (typeof nav.plugins != UNDEF && typeof nav.plugins[SHOCKWAVE_FLASH] == OBJECT) {
        d = nav.plugins[SHOCKWAVE_FLASH].description;
        if (d && !(typeof nav.mimeTypes != UNDEF && nav.mimeTypes[FLASH_MIME_TYPE] && !nav.mimeTypes[FLASH_MIME_TYPE].enabledPlugin)) { // navigator.mimeTypes["application/x-shockwave-flash"].enabledPlugin indicates whether plug-ins are enabled or disabled in Safari 3+
            plugin = true;
            ie = false; // cascaded feature detection for Internet Explorer
            d = d.replace(/^.*\s+(\S+\s+\S+$)/, "$1");
            playerVersion[0] = parseInt(d.replace(/^(.*)\..*$/, "$1"), 10);
            playerVersion[1] = parseInt(d.replace(/^.*\.(.*)\s.*$/, "$1"), 10);
            playerVersion[2] = /[a-zA-Z]/.test(d) ? parseInt(d.replace(/^.*[a-zA-Z]+(.*)$/, "$1"), 10) : 0;
        }
    }
    else if (typeof win.ActiveXObject != UNDEF) {
        try {
            var a = new ActiveXObject(SHOCKWAVE_FLASH_AX);
            if (a) { // a will return null when ActiveX is disabled
                d = a.GetVariable("$version");
                if (d) {
                    ie = true; // cascaded feature detection for Internet Explorer
                    d = d.split(" ")[1].split(",");
                    playerVersion = [parseInt(d[0], 10), parseInt(d[1], 10), parseInt(d[2], 10)];
                }
            }
        }
        catch(e) {}
    }
我发现,在IE10中,它会转到else if部分,而在带有flash 15的IE11中,它会转到第一个if部分。但是,使用IE11和更早版本的闪存,它会跳过两种情况:

window.ActiveXObject在IE11中是未定义的,至少我发现了这一点 但是当我看到navigator时,它也跳过了第一个插件。尽管安装了flash 11.0,但没有任何插件
问题在哪里?为什么我的IE11插件中没有列出较旧的闪存?

你看过源代码了吗?为了得到这个版本,它做了什么?我查看了源代码并编辑了问题A。若:| | ActiveXObject在win中,则可以使用else。默认情况下,IE11试图愚弄浏览器嗅探JS,因为它通常与其他主流浏览器非常兼容。显然,这有时会造成严重破坏!我不知道为什么它没有出现在插件中,虽然-可能是IE中的一个bug?谢谢你的链接和建议,它实际上不工作,只是添加了一个条件,因为显然IE11的行为不同于其他IE,部分IE=true;在else-if中会发生这种情况,如果稍后破坏了整个过程,SWF不会加载:D。但是我添加了另一个else-if-with!window.ActiveXObject&&ActiveXObject处于窗口状态,并复制了原始else if的代码,但保留了ie=true部分。现在它工作正常,但这是一个非常特别的修补程序,我必须说。。。