当我在IE11上使用swfobject.getFlashPlayerVersion()时,flash版本低于当前的15.0.0,结果总是得到“0.0.0”。 (使用版本15,它可以正常工作)
我用FF上的flash播放器插件和IE上的活动x测试了它。使用Firefox,一切正常。 Swfobject FAQ在问题3中指出某些版本可能会给出不正确的结果,但它没有提到返回“0.0.0”并且我还测试了Flash播放器版本9,10,10.2,10.3,11.3和13以及结果在IE中总是一样的。
我真的需要在IE中安装正确版本的Flash播放器。有没有解决这个问题的方法?有没有其他选择如何可靠地获得正确的Flash播放器版本?
编辑:有一个问题,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版本无关紧要),而在IE11中使用flash 15则会转到第一个 if 。但是,对于IE11和更旧的闪存,它会跳过这两个条件:
问题出在哪里?为什么我的IE11插件中没有列出旧的闪存?