我需要告诉用户我的网站使用的浏览器。 (编辑:用户需要添加书签,这在标准的“互联网”浏览器上是不可能的。我需要知道要向他们展示什么消息。)
编辑:我不需要能够检测到任何类型的浏览器。在这种情况下,我需要能够检测浏览器是否真的是Google Chrome浏览器。
对于至少一个智能设备,我无法分辨股票'互联网'浏览器和Chrome之间的区别;两者都包含“Chrome”一词。
三星galaxy s5:
Stock浏览器用户代理:
Mozilla / 5.0(Linux; Android 4.4.2; zh-CN; SAMSUNG-SM-G900A Build / KOT49H) AppleWebKit / 537.36(KHTML,与Gecko一样)版本/ 1.6 Chrome / 28.0.1500.94 Mobile Safari浏览器/ 537.36
Chrome用户代理:
Mozilla / 5.0(Linux; Android 4.4.2; SAMSUNG-SM-G900A Build / KOT49H) AppleWebKit / 537.36(KHTML,与Gecko一样)Chrome / 36.0.1985.128 Mobile Safari浏览器/ 537.36
“版本/ X.x”不同,但总会如此吗?
编辑:我确实已按照评论中的建议检查以前的答案。他们认为非Chrome浏览器不包含Chrome一词。
答案 0 :(得分:8)
所以区别在于用户代理:
版/ x.x中
来自https://developer.chrome.com/multidevice/user-agent#webview_user_agent:
"如果您尝试区分WebView和Android版Chrome,则应在WebView用户代理字符串中查找Version / XX 字符串的存在。 #34;
我认为Chrome浏览器webview浏览器仍然可以选择退出,但如果它有,那么至少我知道它不是谷歌Chrome浏览器!
答案 1 :(得分:3)
请检查此链接:https://developer.chrome.com/multidevice/user-agent 在最后一段中,我们发现:
如果您尝试区分WebView和Chrome 对于Android,您应该查找Version / X.X 的存在 WebView用户代理字符串中的字符串。
答案 2 :(得分:0)
由于我不知道股票浏览器和Chrome之间存在任何明显的功能差异,因此可以发现差异'使用用户代理字符串显示,在浏览器浏览器中声明的Chrome版本是相当多的版本。
虽然它不是最好的区别,并且股票浏览器可以随时更新,至少在目前,这可能适合您。
...你还没有真正说过如何使用它。
答案 3 :(得分:0)
(我不允许发表评论,所以我写了一个答案。)
User984003所以,如果我理解你(从你的评论中),你基本上想要一个测试,以便在移动设备上区分股票浏览器和用户安装的浏览器。你想要这个,因为它们分别在安装bookmarklet的权限的可用性方面存在差异,对吗?
然后在这个主题中讨论了这个主题:How to detect the stock Android browser(这个帖子中的简短且不尽如人意的答案是:“没有可靠且通用的方法来仅检测股票浏览器。”)
另外这里有关于在android上安装bookmarklet的方法的一些信息:http://smallbusiness.chron.com/making-bookmarklets-work-android-50685.html(也许这里有一些您不知道的替代方案,这使得尝试区分浏览器版本已经过时了。)
答案 4 :(得分:0)
阅读了很多东西,似乎它们都没有做太多,看到差异仍然是一个问题。我在网上搜索,没有解决方案。
我自己去检查了一下,发现了这个:
所以我发现原生浏览器(在三星S4上)确实在“Gecko”之后添加了SamsungBrowser。
在Chrome上,它的“像Gecko”Chrome“。
紧接着“Gecko”之后,它就是“Chrome”。
因为三星将自己的字符串附加到用户代理中,所以可能可以做到这一点。
是否有可能其他设备再次出现问题?
答案 5 :(得分:0)
您可以使用JavaScript,例如
var chromeVersion = /^Google/.test(navigator.vendor) && !/ OPR/.test(navigator.userAgent) && /Chrome\/([0-9]+|$)/.exec(navigator.userAgent)[1];
var isChromeWebview = chromeVersion >= 30 && !('chrome' in window);
window.chrome
在Chrome浏览器中定义(至少来自Chrome 10),但Chrome WebView中未定义(Chrome首先用于Android 4.4.x上的WebView; AOSP用于WebView for Android 4.3或更低版本。
我个人不会在生产中使用该测试(对于不同的浏览器和版本,它将是不可靠的),但是如果您将其用于非关键目的,它就能满足您的需求。
答案 6 :(得分:0)
我建议这样的事情:
function testForAndroidChrome() {
var version = navigator.appVersion;
if (version.indexOf('(KHTML, like Gecko) Chrome' != -1) {
return true; // it's Chrome
} else {
return false; // it's the stock browser
}
}
var myTest = testForAndroidChrome(); // returns true or false