Почему этот код работает в IE и не работает в Firefox и Chrome? - PullRequest
1 голос
/ 25 января 2011

Итак, загружая наше новое веб-приложение в 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 Ответ

3 голосов
/ 25 января 2011

Вы полагаетесь на нестандартную возможность IE получать доступ к произвольным атрибутам как свойствам элементов DOM.

В браузерах, соответствующих стандартам, вы не можете написать someElement.tabStripRoot для доступа к атрибуту tabStripRoot.

Измените его на tblList[i].getAttribute('tabStripRoot').

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...