Испытывать это при работе IE 10 с букмарклетом. Когда я запускаю букмарклет на странице, работающей в режимах quirks, и я пытаюсь использовать document.querySelector, document.querySelector не определен.document.querySelector undefined для режима стандартов iframe работает в режиме quirks родительский
В попытке обойти это, когда я обнаруживаю document.documentMode 5 (режим quirks), я создаю iframe и копирую содержимое страницы в этот iframe, чтобы поместить его в режим стандартов. Я проверяю, что документ в iframe находится в стандартном режиме (document.documentMode - 8 - режим IE 8), но document.querySelector по-прежнему не определен. Я считаю, что documentMode должен быть не менее 9 для поддержки querySelector. Я не могу понять, почему documentMode 8 вместо 10, так как я бегу на IE 10.
if(goog.userAgent.IE && document.documentMode <= 5) {
// strip out any scripts from the body
s = document.body.innerHTML.replace(/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi, '');
frame = goog.dom.iframe.createBlank(goog.dom.getDomHelper());
frame.scrolling = "no";
frame.allowTransparency = true;
frame.style.visibility = 'hidden';
document.body.appendChild(frame);
goog.dom.iframe.writeContent(frame, '<!doctype html>\n<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge"></head><body>' + s + '</body></html>');
doc = goog.dom.getFrameContentDocument(frame);
alert(doc.documentMode); // 8 - IE 8 standards mode
alert(doc.querySelectorAll); // null
}
Почему бы вам не использовать функцию обнаружения для '' querySelectorAll() 'вместо номера documentMode? – jfriend00
Я использовал documentMode вместо простой проверки (if (document.querySelector)), чтобы помочь мне отладить эту проблему дальше – Ken