何时使用if(document.all&& document.getElementById)条件

时间:2011-05-17 10:53:31

标签: javascript browser-detection

想知道何时使用,这适用于什么浏览器?

if (document.all&&document.getElementById) {
// Some code block
}

3 个答案:

答案 0 :(得分:4)

我认为没有任何重要的浏览器不支持document.getElementById。甚至IE6也支持它(虽然它错了 - details - 但它与document.all完全相同。我只使用document.getElementById而不是document.all

如果您只是为了检测浏览器而使用它,而不是特别因为您想使用document.alldocument.getElementById浏览器检测通常是一个坏主意。相反,请查看功能检测,测试您想要的实际功能。有一些很好的功能检测示例herehere


偏离主题:如果您要进行任何重要的跨浏览器工作,可以考虑使用jQueryPrototype,{{3 },YUIClosure。他们会为你平滑浏览器差异,提供一些非常有用的实用程序功能,甚至(在某些情况下)修复浏览器错误,例如IE对document.getElementById的破坏处理(jQuery这样做,例如,其他一些可能也是如此) )。

答案 1 :(得分:0)

document.all是旧版IE(IE3及更高版本)实现的功能。它也是由Opera实现的,试图与仅限IE的网站兼容。

但是,document.all不再被推荐用于任何情况 - 它完全过时了。 IE和Opera一直保持对它的支持,因为可能有一些旧的代码仍在使用它,但在现代代码中没有它的位置。

有些脚本库在Javascript中实现了document.all的版本,允许在现代浏览器上运行旧代码。出于这个原因,甚至不值得使用document.all作为浏览器测试(正如您在问题中所示)。事实上,我要做的就是打破你的考试{@ 1}}。

document.all = true;最初是由IE在v5.0中实现的,所以你在问题中给出的条件将是在IE5的时代编写的,并且可能是IE5的原始浏览器检测代码.0和更高,因为那时(当时)是唯一支持这两种方法的浏览器。但正如已经讨论过的那样,它现在几乎没用,并且更有可能给你带来问题,而不是让任何事情发挥作用。

答案 2 :(得分:0)

  

这适用于什么浏览器?

if (document.all)针对IE4 +,Opera在v5(v4 on linux)和v9.5之间,Konqueror 2,iCab 2和3,Omniweb 4(v4.5之前)以及一些使用Rhino javascript的晦涩浏览器引擎。
if (document.getElementById)针对任何支持DOM1的浏览器(IE5 +,NS5 +,OP4 +等......)

  

何时使用if   (的document.all&安培;&安培;的document.getElementById)   条件

我无法想象这种情况的合理用例(它不够具体) 很明显,答案是从不