为什么这个代码在IE中工作而在Firefox和Chrome中失败?

时间:2011-01-25 17:04:20

标签: javascript browser

所以在Firefox和Chrome中加载我们的新网络应用程序我有一个警告巧妙地告诉我找不到tabStrip。通过代码我发现了这个函数:

function initializeTabStrip() {
    var tblList = document.getElementsByTagName("table");
    var tabStrip = null;
    for (var i = 0; i < tblList.length; ++i) {
        if (typeof (tblList[i].tabStripRoot) != "undefined") {
            tabStrip = tblList[i];
            break;
        }
    }
    if (tabStrip) {
        window.tabStrip = new TabStrip(tabStrip);
    }
    else {
        alert("couldn't find tabstrip");
    }
}

在Firefox和Chrome中,typeof (tblList[i].tabStripRoot)都是未定义的,而在Internet Explorer中,相同的代码段会找到一个项目,并正确地进行操作。

我尝试使用Firebug和IE的开发人员工具栏脚本调试工具来跟进并尝试发现'tabStripRoot'是什么,但我没有运气。

你们中的任何一位JavaScript大师都能给我一些方向来解释为什么三分之一的浏览器有效吗?

感谢您的帮助。

1 个答案:

答案 0 :(得分:3)

您依靠IE的非标准功能来访问任意属性作为DOM元素的属性。

在符合标准的浏览器中,您无法编写someElement.tabStripRoot来访问tabStripRoot属性。

将其更改为tblList[i].getAttribute('tabStripRoot')