2017-04-10 150 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