我有5个FF,Chrome,IE,Opera和Safari插件/扩展程序。
如何识别用户浏览器并重定向(一旦单击安装按钮)下载相应的插件?
谷歌浏览器可靠检测通常会导致检查用户代理字符串。这种方法不可靠,因为欺骗这个值很简单。
仅在确实需要时才使用浏览器检测方法,例如显示特定于浏览器的安装扩展说明。尽可能使用特征检测。
// 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' && 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;
在先前的方法依赖于渲染引擎的性质来检测浏览器。这些前缀最终将被删除,因此为了使检测更加可靠,我切换到特定于浏览器的特征:
document.documentMode
。StyleMedia
构造函数。排除三叉戟使我们陷入困境。InstallTrigger
chrome
对象,包含多个属性,包括已记录的chrome.webstore
对象。chrome.webstore
已弃用,并且在最新版本中未定义SafariRemoteNotification
7.1版之后引入的进行检查,以涵盖从3.0版开始的所有Safari。window.opera
已经存在多年了,但是当Opera用Blink + V8(由Chromium使用)替换其引擎时,它将被删除。 chrome
对象已定义(但未定义chrome.webstore
)。由于Opera会努力克隆Chrome,因此我使用了用户代理嗅探功能。!!window.opr && opr.addons
可用于检测Opera 20+(常绿)。CSS.supports()
在Blink中引入。当然,这与Opera中使用的Blink相同。2016年11月更新,包括从9.1.3及更高版本检测Safari浏览器
2018年8月更新,以更新关于chrome,firefox IE和edge的最新成功测试。
已于2019年1月更新,以修复chrome检测(由于window.chrome.webstore弃用),并包括最新成功的chrome测试。
在2019年12月进行了更新,以添加基于Chromium检测的Edge(基于@Nimesh注释)。
我有FF、Chrome、IE、Opera和Safari的5个插件/扩展。 我如何识别用户浏览器并重定向(一旦一个安装按钮已经被点击)下载相应的插件?
问题内容: 除了从浏览器本身清除之外,如何使用JavaScript或Java清除浏览器(IE,Firefox,Opera,Chrome)历史记录? 问题答案: 脚本通常无法访问浏览器中的document.location数据,因为允许访问将使任何给定站点都可以访问您的整个浏览历史记录。最多您可以执行一些简单的操作,例如“转到历史记录条目37”或“返回上一页”。但是您不能执行“历史记录条目#23中的
问题内容: 如何使用JavaScript检测Safari浏览器?我在下面尝试过代码,它不仅可以检测Safari,还可以检测Chrome浏览器。 问题答案: 您可以轻松地使用Chrome的索引来过滤掉Chrome:
我想将JSTestDriver与jenkins-CI集成。问题是生成服务器没有显示。有没有办法无头运行浏览器? 谢谢
当我在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
问题内容: 我一直在寻找可以让我检测访问该网站的用户是否使用Firefox3或4的代码。我发现的所有代码都是用于检测浏览器类型而不是版本的代码。 如何检测这样的浏览器版本? 问题答案: 您可以看到浏览器说的内容,并将该信息用于记录或测试多个浏览器。