1

Испытывать это при работе 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 
} 
+0

Почему бы вам не использовать функцию обнаружения для '' querySelectorAll() 'вместо номера documentMode? – jfriend00

+0

Я использовал documentMode вместо простой проверки (if (document.querySelector)), чтобы помочь мне отладить эту проблему дальше – Ken

ответ

1

Я использовал documentMode вместо того, чтобы просто проверить (если (document.querySelector)), чтобы помочь мне debug this problem further

 Смежные вопросы

  • Нет связанных вопросов^_^