1. 程式人生 > >Javascript高階程式設計學習筆記(33)—— 客戶端檢測(2)怪癖檢測

Javascript高階程式設計學習筆記(33)—— 客戶端檢測(2)怪癖檢測

怪癖檢測

和能力檢測類似,但其目標不同

能力檢測的目的是判斷瀏覽器支不支援某種能力

而怪癖檢測的目的是判斷瀏覽器是否存在某些缺陷

 

這種時候需要我們執行一段程式碼來判斷瀏覽器是否有這樣的缺陷

或者說是怪癖(bug)

 

一般出現這種情況的瀏覽器當然是IE了

就以IE的某個怪癖舉例

在IE8以下有一個bug

如果某個例項的屬性和其原型的不可列舉屬性同名,那麼這個屬性將不會出現在 for-in 迴圈中

也就是說例項上的屬性被原型上的屬性遮蔽了

其怪癖檢測的程式碼如下:

var hasDontEnumQuirk = function(){
    
var o = {toString:function(){}}; for(var prop in o){ if(prop ==="toString"){ return false;// 如果能遍歷出toString則說明瀏覽器不存在該怪癖 } } return true; }

一般來說怪癖是某個瀏覽器獨有的,當這些怪癖會影響我們的程式碼時,我們就需要做怪癖檢測,以做出對應的處理