我应该检查是否定义了document.getElementById

时间:2015-05-27 14:37:47

标签: javascript

我遇到了一些网页javascript代码,它首先检查document.getElementById本身是否存在,然后才对特定元素进行更多预期的检查:

if (document.getElementById) {
    var elem = document.getElementById("someid");
    if (elem) {
        ...
    }
}

这是一种合理的做法还是超偏执狂?如果合理,为什么不:

if (document && document.getElementById) { ... }

3 个答案:

答案 0 :(得分:3)

caniuse.com是一个非常有用的网站,可用于此类活动。在这种情况下,他们说它在所有主流浏览器中得到支持,并且“可以安全使用”。他们提供a source,您可以从中找到它:

  • Chrome 1.0
  • Firefox(Gecko)1.0(1.7或更早版本)
  • IE 5.5
  • Opera 7.0
  • Safari(Webkit)1.0
  • Android 1.0
  • Firefox(Mobile Gecko)1.0(1.0)
  • IE Phone 6.0
  • Opera Mobile 6.0
  • Safari Mobile 1.0

答案 1 :(得分:2)

每个现代浏览器都实现了此功能。我的猜测只是你正在查看一些非常古老的JavaScript代码,而不是这种情况。

https://developer.mozilla.org/en-US/docs/Web/API/Document/getElementById包含一个包含该函数兼容性信息的表。

您无需在代码中检查文档或其任何更广泛使用的函数!

答案 2 :(得分:2)

这是基本功能检测。这段代码的缺点是没有优雅的降级。它应该做类似的事情:

if (feature) {
    // Use it
} else {
    // Graceful alternative
}

话虽如此,getElementById已广泛使用,所以这对我来说是古董代码。