js ajax浏览器做什么,js区分webkit核心浏览器chrome,360浏览器

javascript如何识别webkit核心浏览器是哪种厂商的浏览器,如chrome,360急速,360安全,猎豹,世界之窗,搜狗,qq,百度之类的浏览器,核心都是webkit的,如何区分出不同的厂商。

一般区分浏览器厂商是通过navigator.userAgent来判断特殊字符来实现,但是webkit核心浏览器有些时候navigator.userAgent是完全一样的,不会增加特殊内容(如360就和chrome一模一样,其他的会增加厂商名称,搜狗有些版本的也没有加),javascript要区分浏览器厂商,需要使用external或者浏览器的特殊属性。

如搜狗浏览器的external对象会增加特殊的以Sogou开头的方法,猎豹也是。

0a42a7b868c2f5cc824264999517734a.png

932a78903838431ed6cbb302dab46c22.png

js区分webkit核心浏览器chrome,360浏览器源代码如下

//来源:https://github.com/cloudcome/alien/blob/master/src/core/navigator/shell.js#L68

//由于来源使用了AMD模式加载,需要导入先关AMD类库比较麻烦,所以做了些许修改,并且来源判断不了chrome,会被识别为360浏览器

var browerTool = (function () {

var win = window, nav = win.navigator, doc = win.document, ieAX = win.ActiveXObject, ieMode = doc.documentMode, REG_APPLE = /^Apple/;

var ieVer = _getIeVersion() || ieMode || 0, isIe = ieAX || ieMode, chromiumType = _getChromiumType();

function _testExternal(reg, type) {//区分webkit核心主要通过external中的对象来判断,是否包含特殊的方法名称

var external = win.external || {};

for (var i in external) if (reg.test(type ? external[i] : i)) return true;

return false;

}

function _getChromiumType() {

if (isIe || typeof win.scrollMaxX !== 'undefined' || REG_APPLE.test(nav.vendor || '')) return '';//无法识别

var _track = 'track' in document.createElement('track');

var webstoreKeysLength = win.chrome && win.chrome.webstore ? Object.keys(win.chrome.webstore).length : 0;

if (_testExternal(/^sogou/i, 0)) return 'sogou';

if (_testExternal(/^liebao/i, 0)) return 'liebao';

//==========以下方法不是external或者clientInformation特有的,可能其他浏览器后续版本会增加,如果判断失败也是无解了

if (_testExternal(/^getguid/i, 0)) return 'qq';

if (_testExternal(/^getnextreqid/i, 0)) return 'baidu';

if (win.clientInformation && win.clientInformation.getBattery) return 'chrome';

//==========

if (_track) return webstoreKeysLength > 1 ? '360ee' : '360se';

return '';

}

function _getIeVersion() {

var v = 3, p = document.createElement('p'), all = p.getElementsByTagName('i');

while (p.innerHTML = '', all[0]);

return v > 4 ? v : 0;

}

return {

isIE: (function () { return !!ieVer; })(),

ieVersion: (function () { return ieVer; })(),

isChrome: (function () { return chromiumType === 'chrome'; })(),

is360se: (function () { return chromiumType === '360se'; })(),

is360ee: (function () { return chromiumType === '360ee'; })(),

isLiebao: (function () { return navigator.userAgent.indexOf('LBBROWSER') != -1; })(),

isSogou: (function () { return chromiumType === 'sogou'; })(),

isQQ: (function () { return navigator.userAgent.indexOf('QQBrowser') != -1; })(),

isBaidu: (function () { return navigator.userAgent.indexOf('BIDUBrowser') != -1; })(),

isFiefox: (function () { return navigator.userAgent.indexOf('Firefox') != -1 })(),//火狐

isTheWorld: (function () { return navigator.userAgent.indexOf('TheWorld') != -1 })(),//世界之窗

isOpera: (function () { return !!window.opr })()//欧朋

};

})();

for (attr in browerTool) document.write(attr + '=' + browerTool[attr] + '
');

加支付宝好友偷能量挖...

2015-10-28Web开发网

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值