当前位置: 首页 > 知识库问答 >
问题:

如何检测Safari、Chrome、IE、火狐和Opera浏览器?

齐望
2023-03-14

我有FF、Chrome、IE、Opera和Safari的5个插件/扩展。

我如何识别用户浏览器并重定向(一旦一个安装按钮已经被点击)下载相应的插件?

共有1个答案

庄文栋
2023-03-14

搜索浏览器可靠检测的结果通常是检查用户代理字符串。这个方法不可靠,因为伪造这个值是微不足道的。
我已经编写了一个通过duck-typing检测浏览器的方法。

只有在确实有必要的情况下才使用浏览器检测方法,例如显示特定于浏览器的安装扩展的说明。在可能的情况下使用特征检测。

演示:https://jsfidle.net/6spj1059/

null

// Opera 8.0+
var isOpera = (!!window.opr && !!opr.addons) || !!window.opera || navigator.userAgent.indexOf(' OPR/') >= 0;

// Firefox 1.0+
var isFirefox = typeof InstallTrigger !== 'undefined';

// Safari 3.0+ "[object HTMLElementConstructor]" 
var isSafari = /constructor/i.test(window.HTMLElement) || (function (p) { return p.toString() === "[object SafariRemoteNotification]"; })(!window['safari'] || (typeof safari !== 'undefined' && window['safari'].pushNotification));

// Internet Explorer 6-11
var isIE = /*@cc_on!@*/false || !!document.documentMode;

// Edge 20+
var isEdge = !isIE && !!window.StyleMedia;

// Chrome 1 - 79
var isChrome = !!window.chrome && (!!window.chrome.webstore || !!window.chrome.runtime);

// Edge (based on chromium) detection
var isEdgeChromium = isChrome && (navigator.userAgent.indexOf("Edg") != -1);

// Blink engine detection
var isBlink = (isChrome || isOpera) && !!window.CSS;


var output = 'Detecting browsers by ducktyping:<hr>';
output += 'isFirefox: ' + isFirefox + '<br>';
output += 'isChrome: ' + isChrome + '<br>';
output += 'isSafari: ' + isSafari + '<br>';
output += 'isOpera: ' + isOpera + '<br>';
output += 'isIE: ' + isIE + '<br>';
output += 'isEdge: ' + isEdge + '<br>';
output += 'isEdgeChromium: ' + isEdgeChromium + '<br>';
output += 'isBlink: ' + isBlink + '<br>';
document.body.innerHTML = output;
 类似资料:
  • 问题内容: 我有5个FF,Chrome,IE,Opera和Safari插件/扩展程序。 如何识别用户浏览器并重定向(一旦单击安装按钮)下载相应的插件? 问题答案: 谷歌浏览器可靠检测通常会导致检查用户代理字符串。这种方法不可靠,因为欺骗这个值很简单。 仅在确实需要时才使用浏览器检测方法,例如显示特定于浏览器的安装扩展说明。尽可能使用特征检测。 可靠性分析 在先前的方法依赖于渲染引擎的性质来检测浏览

  • 本文向大家介绍JavaScript自定义浏览器滚动条兼容IE、 火狐和chrome,包括了JavaScript自定义浏览器滚动条兼容IE、 火狐和chrome的使用技巧和注意事项,需要的朋友参考一下 今天为大家分享一下我自己制作的浏览器滚动条,我们知道用css来自定义滚动条也是挺好的方式,css虽然能够改变chrome浏览器的滚动条样式可以自定义,css也能够改变IE浏览器滚动条的颜色。但是css

  • 问题内容: 如何使用JavaScript检测Safari浏览器?我在下面尝试过代码,它不仅可以检测Safari,还可以检测Chrome浏览器。 问题答案: 您可以轻松地使用Chrome的索引来过滤掉Chrome:

  • 当我在chrome上使用ipad时,useragent是 Mozila/5.0(iPad;CPU OS 9_3_5像Mac OS X)AppleWebKit/601.1(KHTML像Gecko)CruiOS/57.0.2987.137 Mobile/13G36.... 问题:因为在iPadOS上,Safari上的用户代理与MacOS笔记本上的相同,遵循https://forums.develope

  • 问题内容: 除了从浏览器本身清除之外,如何使用JavaScript或Java清除浏览器(IE,Firefox,Opera,Chrome)历史记录? 问题答案: 脚本通常无法访问浏览器中的document.location数据,因为允许访问将使任何给定站点都可以访问您的整个浏览历史记录。最多您可以执行一些简单的操作,例如“转到历史记录条目37”或“返回上一页”。但是您不能执行“历史记录条目#23中的

  • 我在配置文件中将浏览器名设置为firefox。 我启动selenium服务器:webdriver-Manager--gecko start。我有gecko驱动版本0.26.0和火狐版本65。当我运行量角器conf.js时,它仍然会触发Chrome。我尝试运行已弃用的独立服务器。即selenium-独立npm,它仍然会触发Chrome。我还安装了最新的量角器。NodeJS: 10.21.0