заставляя Firefox пропустить "текстовые узлы" при разборе DOM с помощью JavaScript - PullRequest
0 голосов
/ 25 января 2011

Привет
Я пишу код javascript для обхода HTML dom и выделения элементов.
Моя проблема в том, что firefox возвращает пробелы в виде текстового узла.
Есть ли какое-либо решение, чтобы заставить его просто возвращать теги?например, мне нужно, чтобы «firstChild» всегда возвращал первый тег, а не какой-либо текст!

Спасибо

Ответы [ 3 ]

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

Вы можете проверить, является ли узел элементом с node.nodeType === 1.

Вы также можете реализовать новый API DOM Travelsal как функции.

var dummy = document.createElement("div");
var firstElementChild = ('firstElementChild' in dummy)
    ? function (el) {
      return el.firstElementChild;
    }
    : function (el) {
        el = el.firstChild;
        while (el && el.nodeType !== 1)
            el = el.nextSibling;
        return el;
    }

использование

firstElementChild(el)
3 голосов
/ 25 января 2011

Вместо этого можно использовать element.firstElementChild.К сожалению, это не поддерживается в IE8 и ниже.

В качестве альтернативы вы можете написать небольшую функцию для сканирования childNode s, пока не найдете следующий узел element.

1 голос
/ 27 января 2011

Может быть, вы могли бы попробовать один из других методов обхода DOM, например TreeWalker .

...