为什么navigator.appName
返回" Netscape"适用于Safari,Firefox和Chrome?
他们与旧浏览器Netscape有什么关系?可能是因为DOM0?
答案 0 :(得分:42)
是的,这是兼容性问题而不是依赖 MDN 说:“这最初是DOM级别0的一部分,但已经包含在HTML5规范中。”
请参阅Mozilla documentation here。
顺便说一句;这就是为什么这不能用于浏览器检测。 浏览器检测是一种不良行为,您应该尽可能避免使用它。请改为 feature detection 。但是,如果有人坚持这一点;他们应该使用userAgent
属性。
更新1 :根据Compatibility Changes; IE11 现在还为"Netscape"
属性返回navigator.appName
,以反映HTML5标准并匹配其他浏览器的行为。另请参阅userAgent
字符串here中的更改...有关功能检测的更多信息here ...
更新2 : Microsoft Edge 还会为"Netscape"
返回navigator.appName
。
答案 1 :(得分:7)
基于Johnny Stenback的帖子:
这是在很久以前就对mozilla新闻组进行过辩论而已经做出决定 即使在mozilla中,navigator.appName也应该返回'Netscape' 如果要在网页上更改每个页面使用一些页面 浏览器嗅探代码(这是当前网络的巨大部分) 需要认识到mozilla,这不会发生 因为mozilla == netscape ==,所以没有理由这样做 对于内容开发者来说,mozilla是有用的。
来源here。
答案 2 :(得分:4)
从IE11开始,资源管理器现在也会在调用navigator.appName时返回“Netscape”;
答案 3 :(得分:0)
现在可以只搜索navigator.userAgent以进行IE 11浏览器检测,然后寻找其布局引擎。以我的经验,它工作得很好。参见此post。