2013-07-29 65 views
8

IE 8中運行下面的代碼時,遇到了一個錯誤,而不是:的JavaScript Document.Head在其他瀏覽器空

「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? – 2013-07-29 18:36:18

+0

我正在使用跨瀏覽器兼容的框架。 – qweqweqwe

回答

14

document.head因爲IE8不支持它而失敗(9之前沒有IE版本);這是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

相關問題