首页 > web前端 > js教程 > 如何在不使用用户代理字符串的情况下可靠地检测用户浏览器?

如何在不使用用户代理字符串的情况下可靠地检测用户浏览器?

DDD
发布: 2024-12-25 01:16:15
原创
863 人浏览过

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
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板