2023年6月21日发(作者:)

js检测浏览器内核function getBrowserInfo(){ var ua = leLowerCase(); var browserType=null; if ((/msie/) != null || (/trident/) != null) { browserType = "IE"; browserVersion = (/msie ([d.]+)/) != null ? (/msie ([d.]+)/)[1] : (/rv:([d.]+)/)[1]; } else if ((/firefox/) != null) { browserType = "⽕狐"; }else if ((/ubrowser/) != null) { browserType = "UC"; }else if ((/opera/) != null) { browserType = "欧朋"; } else if ((/bidubrowser/) != null) { browserType = "百度"; }else if ((/metasr/) != null) { browserType = "搜狗"; }else if ((/tencenttraveler/) != null || (/qqbrowse/) != null) { browserType = "QQ"; }else if ((/maxthon/) != null) { browserType = "遨游"; }else if ((/chrome/) != null) { var is360 = _mime("type", "application/ng-viewer"); function _mime(option, value) { var mimeTypes = pes; for (var mt in mimeTypes) { if (mimeTypes[mt][option] == value) { return true; } } return false; } if(is360){ browserType = '360'; }else{ $('html').css("zoom",".80"); } }else if ((/safari/) != null) { browserType = "Safari"; }}

只有原⽣Chrome中存在⼀种MimeType“application/ng-viewer”,由此可以判断浏览器是加壳Chrome或是原⽣Chrome。

再如,只有IE内核的浏览器存在ActiveXObject对象。由此可以判断是否为IE浏览器判断浏览器类型,我们需要遵循以下原则:

1、采取命中特征原则,当且仅当完全符合区分浏览器的特征时我们才会采⽤此特征。例如单纯通过UA中MSIE来检测是否为IE浏览器是不可靠的。⽽通过判断是否存在MimeType“application/ng-viewer”来断⾔原⽣Chrome在现阶段来看是可⾏性,但也不保证永久有效。

2、对于主流浏览器来说⼀般不存在UserAgent关键字冲突,但对于许多加壳浏览器者就不⼀定了。再次提出某数字浏览器,userAgent⼲脆和IE⼀模⼀样,但渲染模式等等不不知道动了什么⼿脚,与标准IE⾏为差异很⼤。通过userAgent来判断浏览器时,优先命中浏览器特征字。匹配则基本确定为该浏览器,但未匹配也并不代表不是此浏览器。请悉知。

3、优先使⽤浏览器特性来区分浏览器,因为这个准确性较⾼。其次再采⽤userAgent辅助判断,从⽽达到最⾼的匹配度。

4、优先检测第三⽅加壳浏览器,⽬前并未有⼗分好的⽅案,只能枚举⼤部分世⾯上存在并可以判断的浏览器,其他未匹配任何规则的浏览器,为了兼容,请将规则落到四⼤浏览器之⼀。

5、判断浏览器版本,仅仅是为了针对特定浏览器进⾏优化,需要有特定的业务场景需要才要这么做。或者当某个浏览器出现兼容问题时,紧急添加针对浏览器的补丁代码时才判断。更加科学稳妥的办法是使⽤标准的JS函数和API,页⾯元素和样式设计遵循W3C标准。可能存在争议的兼容性问题尽可能采⽤第三⽅框架如jQuery。这才是解决兼容性问题的根本。

下⾯附上最近整理规纳判断浏览器类型的代码

2023年6月21日发(作者:)

js检测浏览器内核function getBrowserInfo(){ var ua = leLowerCase(); var browserType=null; if ((/msie/) != null || (/trident/) != null) { browserType = "IE"; browserVersion = (/msie ([d.]+)/) != null ? (/msie ([d.]+)/)[1] : (/rv:([d.]+)/)[1]; } else if ((/firefox/) != null) { browserType = "⽕狐"; }else if ((/ubrowser/) != null) { browserType = "UC"; }else if ((/opera/) != null) { browserType = "欧朋"; } else if ((/bidubrowser/) != null) { browserType = "百度"; }else if ((/metasr/) != null) { browserType = "搜狗"; }else if ((/tencenttraveler/) != null || (/qqbrowse/) != null) { browserType = "QQ"; }else if ((/maxthon/) != null) { browserType = "遨游"; }else if ((/chrome/) != null) { var is360 = _mime("type", "application/ng-viewer"); function _mime(option, value) { var mimeTypes = pes; for (var mt in mimeTypes) { if (mimeTypes[mt][option] == value) { return true; } } return false; } if(is360){ browserType = '360'; }else{ $('html').css("zoom",".80"); } }else if ((/safari/) != null) { browserType = "Safari"; }}

只有原⽣Chrome中存在⼀种MimeType“application/ng-viewer”,由此可以判断浏览器是加壳Chrome或是原⽣Chrome。

再如,只有IE内核的浏览器存在ActiveXObject对象。由此可以判断是否为IE浏览器判断浏览器类型,我们需要遵循以下原则:

1、采取命中特征原则,当且仅当完全符合区分浏览器的特征时我们才会采⽤此特征。例如单纯通过UA中MSIE来检测是否为IE浏览器是不可靠的。⽽通过判断是否存在MimeType“application/ng-viewer”来断⾔原⽣Chrome在现阶段来看是可⾏性,但也不保证永久有效。

2、对于主流浏览器来说⼀般不存在UserAgent关键字冲突,但对于许多加壳浏览器者就不⼀定了。再次提出某数字浏览器,userAgent⼲脆和IE⼀模⼀样,但渲染模式等等不不知道动了什么⼿脚,与标准IE⾏为差异很⼤。通过userAgent来判断浏览器时,优先命中浏览器特征字。匹配则基本确定为该浏览器,但未匹配也并不代表不是此浏览器。请悉知。

3、优先使⽤浏览器特性来区分浏览器,因为这个准确性较⾼。其次再采⽤userAgent辅助判断,从⽽达到最⾼的匹配度。

4、优先检测第三⽅加壳浏览器,⽬前并未有⼗分好的⽅案,只能枚举⼤部分世⾯上存在并可以判断的浏览器,其他未匹配任何规则的浏览器,为了兼容,请将规则落到四⼤浏览器之⼀。

5、判断浏览器版本,仅仅是为了针对特定浏览器进⾏优化,需要有特定的业务场景需要才要这么做。或者当某个浏览器出现兼容问题时,紧急添加针对浏览器的补丁代码时才判断。更加科学稳妥的办法是使⽤标准的JS函数和API,页⾯元素和样式设计遵循W3C标准。可能存在争议的兼容性问题尽可能采⽤第三⽅框架如jQuery。这才是解决兼容性问题的根本。

下⾯附上最近整理规纳判断浏览器类型的代码