首頁 > web前端 > js教程 > 如何在不使用用戶代理字串的情況下可靠地檢測用戶瀏覽器?

如何在不使用用戶代理字串的情況下可靠地檢測用戶瀏覽器?

DDD
發布: 2024-12-25 01:16:15
原創
874 人瀏覽過

How Can I Reliably Detect User Browsers Without Using User Agent Strings?

在沒有使用者代理字串的情況下偵測使用者瀏覽器

辨識瀏覽器類型

為多個瀏覽器開發擴充功能時,至關重要準確地識別使用者的瀏覽器,將其重定向到相應的下載頁面。然而,依靠用戶代理字串進行瀏覽器檢測是不可靠的,因為它容易受到欺騙。

用於準確瀏覽器檢測的鴨子打字

為了解決這個問題,採用鴨子類型方法。鴨子類型側重於瀏覽器的行為和屬性,而不是依賴特定的簽名或識別字串。這種方法更加健壯,不易受到欺騙。

演示和實作

在提供的JavaScript 程式碼中,執行了各種檢查來識別常見的瀏覽器,包括Firefox 、Chrome、Safari、Opera、IE 、Edge 和Edge Chromium。每次檢查都會檢查瀏覽器的獨特特徵,確保準確檢測。

功能檢測優於瀏覽器檢測

雖然瀏覽器檢測有時是必要的,但通常建議在以下情況下優先考慮功能檢測:可能的。功能檢測涉及檢查特定瀏覽器功能是否存在,以確保更好的穩健性以及與未來瀏覽器版本的兼容性。

程式碼範例

以下程式碼片段提供了基於duck-typing的瀏覽器偵測方法:

// Duck-typing browser detection

var isFirefox = typeof InstallTrigger !== 'undefined';
var isChrome = !!window.chrome && (!!window.chrome.webstore || !!window.chrome.runtime);
var isSafari = /constructor/i.test(window.HTMLElement) || (function (p) { return p.toString() === "[object SafariRemoteNotification]"; })(!window['safari'] || (typeof safari !== 'undefined' && window['safari'].pushNotification));
var isOpera = (!!window.opr && !!opr.addons) || !!window.opera || navigator.userAgent.indexOf(' OPR/') >= 0;
var isIE = /*@cc_on!@*/false || !!document.documentMode;
var isEdge = !isIE && !!window.StyleMedia;
var isEdgeChromium = isChrome && (navigator.userAgent.indexOf("Edg") != -1);
var isBlink = (isChrome || isOpera) && !!window.CSS;
登入後複製

以上是如何在不使用用戶代理字串的情況下可靠地檢測用戶瀏覽器?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板