什么版本的IE使用window[objectName]而不是window.document[objectName]?

3

我正在尝试使用JavaScript回调到嵌入在我的页面中的Flex应用程序。查看了一些示例后,我发现可以使用以下代码来获取对Flex应用程序的引用:

// Get the reference:
function thisFlexApp(appName) {
    if(navigator.appName.indexOf ('Microsoft') != -1) {
        return window[appName];
    }
    else {
        return window.document[appName];
    }
}

// Use it:
var someVariable = thisFlexApp('NameOfFlexApp').callbackMethod();

我用过这种方法,但在使用IE9时,出现了“thisFlexApp”调用不起作用的错误。结果发现,在IE9中,window.document[appName]可以工作,但window[appName]不能。由于我不希望我的政府客户使用IE9,所以我想知道这种方法实际上适用于哪个版本的IE?除了上面那个假设所有版本的IE都按照某种方式工作的测试之外,是否有其他更好的测试方法?提前感谢。

1个回答

5
不要检查浏览器版本,而是检查浏览器的能力。你可以简单地检查window[appName]是否存在,如果存在,则使用它。
function thisFlexApp(appName) {
    if(window[appName]) {
        return window[appName];
    }
    else {
        return window.document[appName];
    }
}

甚至可以更简洁:
function thisFlexApp(appName) {
    return window[appName] || window.document[appName];
}

1
好的点子。为什么我想不到这些东西呢? :) - Ocelot20

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接