2016-05-13 73 views
1

我使用下面的代碼運行一個腳本:document.getElementsByTagName('head')[0]是否可以返回null?

var js = document.createElement('script'); 
js.src = 'http://xxx./yyy.js'; 
document.getElementsByTagName('head')[0].appendChild(js); 

將在各種瀏覽器中的此代碼的工作?例如,恐怕如果head標記因任何原因不存在,我會得到一個'空對象'錯誤。

但事實是,我在某些瀏覽器上測試過,沒有發生錯誤。

所以,請專家告訴我,這將解決所有瀏覽器?

+2

這不是一個真正的問題/問題.... Stackoverflow是編程問題。您將不得不測試您自己的開發或研究創建動態腳本標記的限制。 – NewToJS

+0

我看到的唯一問題是'getelementsbytagname'中的案例問題,它應該是'getElementsByTagName' - Pascal Casing http://c2.com/cgi/wiki?PascalCase –

+0

'scrip'應該是'script','getelementsbytagname'應該'getElementsByTagName'和'.appendChild()'應該是'.appendChild(js)' – itzmukeshy7

回答

0

possibledocument.getElementsByTagName('head')[0](和document.head)返回null如果有文檔中沒有<head>,例如有人做此之後:

document.head.parentNode.removeChild(document.head); 

在另一方面,省略了在HTML <head>源代碼應該導致這種在「HTML5」兼容的解析器,因爲他們是required to insert it for you。 (我不希望舊的瀏覽器有所不同,但是這是不可能的,以確保有關的任何輸入所有瀏覽器的所有版本。)

如果你滿意的有the same browser support as jQuery 2,你可能會得到緩解知道他們use head without null-checking

相關問題