识别浏览器类型
为多个浏览器开发扩展程序时,至关重要准确识别用户的浏览器,将其重定向到相应的下载页面。然而,依靠用户代理字符串进行浏览器检测是不可靠的,因为它容易受到欺骗。
用于准确浏览器检测的鸭子打字
为了解决这个问题,采用鸭子类型方法。鸭子类型侧重于浏览器的行为和属性,而不是依赖于特定的签名或标识字符串。这种方法更加健壮,不易受到欺骗。
演示和实现
在提供的 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中文网其他相关文章!