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

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

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

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开发网

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

  1. 360浏览器支持ajax吗,请问IE11,chrome,360浏览器7.1极速等这些浏览器不支持ajax技术吗?...

    请问IE11,chrome,360浏览器7.1极速等这些浏览器不支持ajax技术吗?0 qdh_water2016.01.12浏览69次分享举报 以下是源代码,下面的代码在IE9,IE8,360浏览器 ...

  2. 360 html禁止自动填充,360浏览器的表单自动填充设置在哪?360浏览器自动填充表单的问题怎么解决?...

    360浏览器的表单自动填充设置在哪?360浏览器自动填充表单的问题怎么解决? 很多用户都遇到了360浏览器自动填充表单的问题,那么怎么解决呢?今天带来360浏览器自动填充表单的问题解决方法分享. 开发 ...

  3. 【工具】部分浏览器截图操作--Edge+Chrome+360浏览器

    [工具]部分浏览器截图操作–Edge+Chrome+360浏览器 一.Google浏览器截图 1,进入Google浏览器开发者模式 在网页空白处右击鼠标,选择"检查(N)",打开控 ...

  4. Android 浏览器内核浅谈,基于WebKit内核的Android手机浏览器的性能研究与加载优化...

    南京邮电大学 硕士 2017 基于WebKit内核的Android手机浏览器的性能研究与加载优化 Performance Research and Load Optimization of Andro ...

  5. 打开360浏览器显示无法连接服务器错误,Win10电脑上360浏览器提示网络连接错误,错误代码 102的解决方案...

    360浏览器是我们经常在Win10电脑上使用的浏览器之一,如果我们在Win10电脑上,用360浏览器无法打开网页,还提示网络连接错误,错误代码 102,这个我们要怎么办呢?这个问题已经让很多用户无法正 ...

  6. 中国浏览器市场份额状况(2010年4月)360浏览器对IE构成最大威胁

    IE的市场份额还是很大,看来国内和国际的数据还是一定距离,IE6仍然还是60%这样强劲的份额. 360浏览器提高真快,已经把老牌国内浏览器遨游给击溃了, 搜狐最近强推浏览器,也有很快提高,2009年应 ...

  7. ace.js ajax 跳转,ace.js中文使用手册,收集比较全面

    发表于黑白课堂 ace.js 官方的github https://github.com/ajaxorg/ace ace 是一个用 JavaScript 编写的独立代码编辑器.我们的目标是创建一个基于浏 ...

  8. 原生js.ajax内存溢出,【JS】解决内存溢出问题

    首页 专栏 javascript 文章详情 0 解决内存溢出问题 comer发布于 27 分钟前 webpack 运行 npm run build 内存溢出 JavaScript heap out o ...

  9. js ajax局部替换,纯JS实现AJAX局部刷新功能

    AJAX即"Asynchronous Javascript And XML"(异步JavaScript和XML),是指一种创建交互式网页应用的网页开发技术. AJAX = 异步 J ...

最新文章

  1. 开发基础之使用git把项目提交到github托管
  2. 现代软件工程 第六章 【敏捷流程】练习与讨论
  3. jquery 全选获取值
  4. Python计算有向图中所有节点出度和入度
  5. 技术再好,能阻止暴力视频的疯传吗?
  6. 太赞了,Intellij IDEA竟然把Java8的数据流问题这么完美的解决掉了!
  7. 最新基于高德地图的android进阶开发(6)感兴趣点(POI)周边搜索源码浅析
  8. 图计算:社区发现算法
  9. coreldraw怎么画转弯箭头_新交规出炉,这样转弯会被扣8分罚款300,又有7.3万车主因此被罚!...
  10. r矢量球坐标系旋度_6矢量分析:旋度、散度、梯度.ppt
  11. oracle创建自增序列
  12. __kindof的用法
  13. 移动端安卓和苹果手机背景图片显示不全的问题
  14. CD4040二进制计数器实验电路的效果图演示_基础硬件电路图讲解
  15. vue 移动端剪裁
  16. phpstorm database 使用
  17. ZKT门禁机标准联接线(按键开关经过卡机)
  18. windows server 2016域控屏保策略设置
  19. [论文解读]A Survey of Methods for Explaining Black Box Models
  20. 公众号社区运营秘籍-大咖教你玩

热门文章

  1. 犹太人:赚钱能培养孩子独立责任奋进多种能力!
  2. 2020年支付宝福卡获取攻略
  3. “避开”电视剧的腾讯视频为何要叫板“综艺”?
  4. 网传阿里裁员20% 涉及上万人
  5. JAVA毕业设计计算机专业招聘网站计算机源码+lw文档+系统+调试部署+数据库
  6. 浅谈K8S的容器管理
  7. 宁夏理工学院计算机是专科吗,宁夏理工学院是本科还是专科
  8. 2018校招面经-深信服-网申-技术服务工程师挂面
  9. 优秀工程师应该具备哪些素质_想成为一名合格的技术工程师需要具备哪些能力?...
  10. python win7正常的文件路径到win10报错_如何更改临时文件路径_win10怎么更改临时文件夹的路径图文步骤...