想知道何時使用,這適用於什麼瀏覽器?何時使用if(document.all && document.getElementById)條件
if (document.all&&document.getElementById) {
// Some code block
}
想知道何時使用,這適用於什麼瀏覽器?何時使用if(document.all && document.getElementById)條件
if (document.all&&document.getElementById) {
// Some code block
}
我不認爲有不支持任何document.getElementById
瀏覽器顯著左右。即使IE6支持它(雖然它得到了錯誤 — details —但它與document.all
做同樣的事情)。我只是使用document.getElementById
而不是document.all
。如果您在使用本
只是來檢測瀏覽器,而不是專門因爲要使用document.all
或document.getElementById
,瀏覽器檢測通常是一個壞主意。相反,看看功能檢測,測試你想要的實際功能。特徵檢測here和here有一些很好的例子。
題外話:如果你正在尋找做任何顯著跨瀏覽器的工作,你可以考慮使用一個庫一樣jQuery,Prototype,YUI,Closure,或any of several others。他們會爲你平滑瀏覽器的差異,提供一些非常有用的實用功能,甚至(在某些情況下)修復瀏覽器錯誤,如IE的破壞處理document.getElementById
(jQuery這樣做,例如,其他人可能也是如此)。
document.all
是由舊版IE(IE3及更高版本)實現的功能。它也是由Opera實施的,目的是爲了與僅限IE的網站兼容。
但是不再推薦使用document.all
在任何情況下使用 - 它完全過時。 IE和Opera一直支持它,因爲可能有一些舊代碼仍然使用它,但在現代代碼中沒有它的位置。
有些腳本庫在Javascript中實現了document.all
版本,允許舊代碼在現代瀏覽器上運行。出於這個原因,甚至不值得使用document.all
作爲瀏覽器測試(正如你在問題中所展示的那樣)。事實上,我必須做的所有事情都是寫入document.all = true;
。
document.getElememtById
最初是由IE5.0版本實現的,所以你在問題中給出的條件應該是在IE5的日子裏寫的,而且是IE5.0的原始瀏覽器檢測代碼,更高,因爲那是(當時)唯一支持這兩種方法的瀏覽器。但正如已經討論的那樣,現在它幾乎沒有用處,並且更有可能導致你的問題而不是做任何事情。
這適用於什麼瀏覽器?
if (document.all)
目標IE4 +,歌劇V5之間(在Linux V4)和v9.5器Konqueror 2,因爲iCab 2和3,4了OmniWeb(V4.5之前),並使用Rhino JavaScript引擎一些模糊的瀏覽器。
if (document.getElementById)
目標的任何DOM1準備瀏覽器(IE5 +,NS5 +,OP4 +等)
何時如果 (的document.all & &的document.getElementById)使用 條件
我不能想象一下這種情況的合理用例(它不夠具體)。
所以顯然的答案是從來沒有。
千萬不要使用它。這是一種古老的方法來檢測其中一個IE版本,6我認爲。您想做什麼? – 2011-05-17 10:57:17
我在這裏發現了這個方法http://www.alistapart.com/articles/dropdowns/要實現li:在IE 6,7上懸停,因爲他們不支持它。我認爲,如果(document.getElementById){//一些代碼}在我提到的上下文中有意義,它會更好。非常感謝Crow for Feature Deteection提示。 – nepsdotin 2011-05-19 04:38:49