javascript - 使用javascript检测用户浏览器

标签 javascript html cross-browser

我正在使用以下代码来发现用户浏览器:

navigator.appName == "Microsoft Internet Explorer"

一直有效,但 IE11 正在返回 Netscape

我读到浏览器检测是一种不好的做法。 ( Why does JavaScript navigator.appName return Netscape for Safari, Firefox and Chrome? ),我们应该检测特征。但是 site MS 教我如何检测 IE 浏览器。

在 IE11 中,即使是 userAgent 也会提到 IE:

Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; .NET4.0E; .NET4.0C; InfoPath.3; .NET CLR 3.5.30729; .NET CLR 2.0.50727; .NET CLR 3.0.30729; rv:11.0) like Gecko

话虽这么说:

了解我必须使用什么的正确方法是什么?

比如我用的是IE,命令是:

window.document.execCommand('Stop');

否则,命令是

window.stop()

搭顺风车,知道浏览器是否支持HTML5的正确方法是什么?

最佳答案

正如您所提到的,正确的方法是只检查该功能,而根本不要进行浏览器嗅探。

function stop() {
    if ('execCommand' in document) {
       document.execCommand('Stop');
    }else{
       window.stop()
    }
}

反过来,你可以用 execCommand 填充 window.stop,就像这样

if (! ( typeof window.stop == 'function' && 
        window.stop.toString().indexOf('native code') != -1
      )
) {
    window.stop = function () {
        document.execCommand('Stop');
    }
}

这也将确保它是 native 方法,并在 Chrome、Firefox 和 Opera 中进行了测试

关于javascript - 使用javascript检测用户浏览器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25375318/

相关文章:

html - Bootstrap 3 折叠导航栏切换将不起作用

css - 使用 css 定位特定浏览器

jquery - 用于梳理 css 来查找哪种样式被什么规则覆盖的方法/工具?

javascript - 正则表达式 flavor 翻译

javascript - 更改屏幕大小时如何删除功能(菜单响应)

html - Rails - 使用一个提交按钮提交多个表单

html - 在 html 中禁用/只读选择标签

javascript - 为什么有些页面停滞不前? (广告相关)

javascript - 保持滚动可见但在导航菜单打开时禁用

Javascript onkeyup 事件仅适用于 Chrome 时间计算器