我打算扮演一個魔鬼的擁護者。我一直在想,爲什麼瀏覽器檢測(而不是特徵檢測)被認爲是一種糟糕的做法。如果我測試某個特定版本的瀏覽器並確認,某些功能的行爲是以某種可預測的方式進行的,那麼決定做特殊情況似乎可以。理由是它將在未來萬無一失,因爲這部分瀏覽器版本不會改變。在另一方面,如果我發現一個DOM元素具有的功能X,它並不一定意味着:瀏覽器檢測與功能檢測
- 此功能適用於所有的瀏覽器同樣的方式,並
- 更爲關鍵的是,它會工作即使在所有未來的瀏覽器中也是如此。
我只是窺探了jQuery源代碼,他們通過將精心構造的HTML代碼片段插入到DOM中進行特徵檢測,然後檢查它是否具有某些功能。這是一個明智而穩固的方式,但是我想說如果我在我的一小段個人JavaScript(沒有jQuery)中做了這樣的事情,那將會有點沉重。他們還具有實際無限的質量保證資源的優勢。另一方面,你經常看到人們做的事情是他們檢查函數X的存在,然後基於此,他們認爲函數將在具有此函數的所有瀏覽器中以某種方式表現。
我不是說在這個意義上任何特徵檢測是不是一件好事(如果正確使用),但我不知道爲什麼瀏覽器檢測通常會立即辭退,即使它聽起來合乎邏輯。我想知道這是否是另一種流行的說法。
「*在我看來,自從幾年前Resig發佈此帖以來,瀏覽器檢測已被廣泛地忽視*」。瀏覽器檢測早在那篇文章之前就已經不是很好的做法我不認爲你使用瀏覽器檢測堆疊的任何原因。在哪個Intranet應用程序中缺乏對PNG透明度的支持?現在比以往任何時候都更簡單地編寫跨瀏覽器網站,只要採用實用的方法來實現更新的功能即可。你真的會放棄對瀏覽器的支持,因爲它不支持* const *或* let *? – RobG 2017-01-31 00:00:17
@RobG:我從來沒有說過,「瀏覽器檢測」等於「拒絕訪問」和「放棄支持」。通過瀏覽器檢測,我只是指在代碼中存在「if(navigator.userAgent ...)」。如果檢測到某個瀏覽器會發生什麼變化。它可能僅僅意味着使用gif而不是png。 – 2017-01-31 16:23:09