辨識瀏覽器類型
為多個瀏覽器開發擴充功能時,至關重要準確地識別使用者的瀏覽器,將其重定向到相應的下載頁面。然而,依靠用戶代理字串進行瀏覽器檢測是不可靠的,因為它容易受到欺騙。
用於準確瀏覽器檢測的鴨子打字
為了解決這個問題,採用鴨子類型方法。鴨子類型側重於瀏覽器的行為和屬性,而不是依賴特定的簽名或識別字串。這種方法更加健壯,不易受到欺騙。
演示和實作
在提供的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中文網其他相關文章!