2017-04-10 151 views
3

我发现了一个奇怪的问题:无论传递给hasFeature函数的参数是什么,它总是返回true。为什么document.implementation.hasFeature()总是返回true?

console.log(document.implementation.hasFeature('HTML', '2.0'));//return true 
 
console.log(document.implementation.hasFeature('fake', '9.0'));//return true

谁能请告诉我为什么hasFeature()函数不能正常工作?

回答

4

从MDN:https://developer.mozilla.org/en-US/docs/Web/API/DOMImplementation/hasFeature

DOMImplementation.hasFeature()方法返回一个布尔标志指示是否支持一个给定的功能。它被弃用,现代浏览器在所有情况下均返回true。

在报告什么类型的功能时,不同的实现方式相当不同。该规范的最新版本决定强制此方法始终返回true,功能准确且正在使用中。

+0

thx。我在IE 8中运行了一些代码,并确认hasFeature()正常工作。所以它仍然适用于一些较旧的浏览器。顺便说一句,根据书_Professional JavaScript for Web Developer的第三版_,在大多数情况下,除了hasFeature()之前使用功能检测 是一个好主意,因为它使用了DOM的特定部分。 – marcel

+0

所有这些描述仅适用于现代浏览器。较早的浏览器表现出预期的方式。 – Mamun