Я настоятельно рекомендую вам не попробовать для поддержки IE6.
Но вы можете добавить document.querySelector
и document.querySelectorAll
с помощью this very clever trick from an Ajaxian article. Статья на самом деле немного ошибочна, она добавляет что-то под названием querySelector
, которое вместо этого делает querySelectorAll
. Я исправил имя здесь:
/*@cc_on
if (!document.querySelectorAll)
document.querySelectorAll = 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;
}
@*/
Хотя я бы никогда не лицо, используя for-in
подобное; details and alternatives in this other answer.
И умозаключения, querySelector
:
/*@cc_on
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);
// Return first result only
return document.__qsResult[0] || null;
}
@*/
Обратите внимание, что ни один из выше добавляет Element#querySelector
или Element#querySelectorAll
(версии, которые выглядят только внутри элемента), просто document.querySelector
и document.querySelectorAll
. И вы не можете добавить версии Element
на IE6, не добавляя их к каждому отдельному элементу, поскольку IE6 не поддерживает прототипы элементов.
Зачем вам так мучить себя? –
не делайте. Пусть он спустится в жгучем аду, где он встретит свою судьбу. Я слышал, что сатана ждет IE6 –
Получение цветов на дисплее BW ... – Shomz