Как я могу воспроизвести что-то похожее на querySelector в браузерах, таких как IE 7 и 6? - PullRequest
2 голосов
/ 05 октября 2010

Я возился с попыткой определить, насколько сложен запрос (например, если это просто селектор идентификатора, он вместо этого проходит через getElementById и т. Д.), Но это явно не способ выполнить сложные запросы CSS и, вероятно, не выполнитсянесколько селекторов.

Так что мой вопрос ко всем, кто сделал что-то подобное, как вы в конечном итоге повторили это для старых браузеров.

Ответы [ 2 ]

3 голосов
/ 05 октября 2010

Использовать jQuery ?Или, по крайней мере, библиотека селекторов типа Sizzle .Нет смысла изобретать велосипед.

0 голосов
/ 11 января 2013

Для предсказуемой поддержки широкого диапазона селекторов используйте Sizzle (или jQuery, который использует Sizzle)

В противном случае вы можете использовать фрагмент из: Создание querySelector для IE, который работает на «родной скорости» - Ajaxian

if (!document.querySelector)
    document.querySelector = function(selector) {
        var head = document.documentElement.firstChild;
        var styleTag = document.createElement("STYLE");
        head.appendChild(styleTag);
        document.__qsResult = [];

        styleTag.styleSheet.cssText = selector + "{x:expression(document.__qsResult.push(this))}";
        window.scrollBy(0, 0);
        head.removeChild(styleTag);

        var result = [];
        for (var i in document.__qsResult) {
            result.push(document.__qsResult[i]);
        }
        return result;
    }
...