为了账号安全,请及时绑定邮箱和手机立即绑定

谷歌浏览器返回的版本信息中,既有Chorme又有Safari字符串值,

if(u_agent.indexOf("Firefox")>-1) 如果把 Firefox 改成Safari,浏览器名就会变成了Firefox而不是Chorme 了。像这种浏览器版本信息中字符串值有重合的,for循环返回的浏览器名还准确吗?

正在回答

2 回答

navigator的信息可以很容易地被用户修改,所以JavaScript读取的值不一定是正确的。初学者为了针对不同浏览器编写不同的代码,喜欢用if判断浏览器版本,例如:

var width;
if (getIEVersion(navigator.userAgent) < 9) {    width = document.body.clientWidth;
} else {    width = window.innerWidth;
}

但这样既可能判断不准确,也很难维护代码。正确的方法是充分利用JavaScript对不存在属性返回undefined的特性,直接用短路运算符||计算:

var width = window.innerWidth || document.body.clientWidth;


1 回复 有任何疑惑可以回复我~
#1

weibo_健桑爱吐槽_03638347

那返回的数字是啥意思,比如说我刚用360试了一下,返回的是370,表示啥
2016-08-18 回复 有任何疑惑可以回复我~

首先,问题的初衷是为了知道是那种浏览器。所以,为什么会去改动返回的内容呢?(没意义),

然后不同浏览器返回的结果是不一样的,为什么GOOGLE浏览器返回的会有safi的标识呢?

就是一个浏览器标识而已。是因为chrome模仿苹果WebKit标识让网站识别以获得访问更加精湛的页面。虽然带有apple,但苹果本身份额很小。chrome里面的APPLEWebKit标识一直没去掉。WebKit是Mac OS X v10.3及以上版本所包含的软件框架(对v10.2.7及以上版本也可通过软件更新获取)。同时,WebKit也是Mac OS X的Safari网页浏览器的基础。WebKit是一个开源项目,主要由KDE的KHTML修改而来并且包含了一些来自苹果公司的一些组件。

不同浏览器返回的结果如下(所以返回的结果判断还是准确的):

IE(8-10)

u_agent:Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E)


Chrome

u_agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36


Chrome(115浏览器,内核也是Chrome的)

u_agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.75 Safari/537.36


Safari

u_agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/534.57.2 (KHTML, like Gecko) Version/5.1.7 Safari/534.57.2


5 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

谷歌浏览器返回的版本信息中,既有Chorme又有Safari字符串值,

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信