想知道何时使用,这适用于什么浏览器?
if (document.all&&document.getElementById) {
// Some code block
}
答案 0 :(得分:4)
我认为没有任何重要的浏览器不支持document.getElementById
。甚至IE6也支持它(虽然它错了 - details - 但它与document.all
完全相同。我只使用document.getElementById
而不是document.all
。
如果您只是为了检测浏览器而使用它,而不是特别因为您想使用document.all
或document.getElementById
,浏览器检测通常是一个坏主意。相反,请查看功能检测,测试您想要的实际功能。有一些很好的功能检测示例here和here。
偏离主题:如果您要进行任何重要的跨浏览器工作,可以考虑使用jQuery,Prototype,{{3 },YUI或Closure。他们会为你平滑浏览器差异,提供一些非常有用的实用程序功能,甚至(在某些情况下)修复浏览器错误,例如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) 条件
我无法想象这种情况的合理用例(它不够具体) 很明显,答案是从不。