2013-07-29 18 views
8

otrzymuję błąd, gdy uruchomiony następujący kod w IE 8, ale nie w innych przeglądarkach:JavaScript Document.Head jest Null

„document.head” jest null lub nie jest obiektem

Oto mój kod :

<!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 używam w celu zapewnienia zgodności w różnych przeglądarkach. – qweqweqwe

Odpowiedz

14

document.head nie powiodło się, ponieważ IE8 go nie obsługuje (brak wersji IE przed 9); to nowa funkcja HTML5. Zamiast tego można użyć następujących w każdej przeglądarce:

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

Jeśli document.head określone (dostępny), to będzie zwarcie i użyć jej bezpośrednio. Jeśli nie jest zdefiniowany, użyje części document.getElementsByTagName, która znajdzie ją w dowolnej przeglądarce.

Jeśli nie chcesz mieć tego rodzaju this || that w swoim kodzie, jest to bezpieczne i wystarczająco dobre, aby po prostu zawsze używać document.getElementsByTagName("head")[0].


Referencje:

+0

Zobacz zmiany w kodzie. – qweqweqwe

+0

@asg: Przypuszczalnie, osadzenie Instagrama zawiera 'document.head' i nie można go edytować. – thirtydot

+0

Prawdopodobnie nie jest to łatwe rozwiązanie, ale nie wiem na pewno. – thirtydot

Powiązane problemy