2013-07-29 1 views
8

Получение ошибки при выполнении следующего кода в IE 8, но не в других браузерах:JavaScript Document.Head является Null

«document.head» равно нулю или не является объектом

Вот мой код :

<!DOCTYPE html> 
    <html> 
    <head> 
    <meta charset="utf-8" /> 
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> 
    <link rel="stylesheet" type="text/css" href="style.css" media="screen" /> 
    <script type="text/javascript" src="respond.min.js"></script> 

    <script> 
    function load() { 
    document.getElementsByID("myFrame"); 
    } 
    </script> 
    </head> 
    <body>  

    <iframe src="http://instagram.com/p/bTlK6CRNcL/embed/" width="300" height="400" frameborder="0" scrolling="no" allowtransparency="true" id="myFrame" onload="load()"></iframe> 

</body> 
</html> 
+0

respond.min.js? –

+0

Framework Я использую для совместимости в браузерах. – qweqweqwe

ответ

14

document.head терпит неудачу, потому что IE8 не поддерживает (не версия IE до 9); это новая функция HTML5. Вместо этого, вы можете использовать следующие в любом браузере:

var head = document.head || document.getElementsByTagName("head")[0]; 

Если document.head определен (доступен), это будет короткое замыкание и использовать это немедленно. Если он не определен, он будет использовать часть document.getElementsByTagName, которая найдет ее в любом браузере.

Если вы хотите иметь этот вид this || that на протяжении всего вашего кода, это безопасно и достаточно хорошо, чтобы всегда использовать document.getElementsByTagName("head")[0].


Ссылки:

+0

См. Изменения в коде. – qweqweqwe

+0

@asg: Предположительно, вставка Instagram содержит 'document.head', и вы не можете ее редактировать. – thirtydot

+0

Наверное, нет легкого решения, но я точно не знаю. – thirtydot

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