为什么JavaScript navigator.appName会为Safari、Firefox和Chrome返回Netscape?

7hiiyaii  于 2023-01-01  发布在  Java
关注(0)|答案(4)|浏览(162)

为什么navigator.appName在Safari、Firefox和Chrome中返回“Netscape”?
他们和旧的浏览器网景有什么关系?会不会是因为DOM0?

c90pui9n

c90pui9n1#

是的,这是兼容性问题,不值得信赖。

    • MDN**说:* "这最初是DOM Level 0的一部分,但后来被包含在HTML5规范中。"*

参见Mozilla documentation here
顺便说一句,这就是为什么这个不能用于浏览器检测。浏览器检测是一个坏的做法,你应该总是尽可能避免它。做**feature detection**代替。但如果有人坚持这样做;它们应该使用userAgent属性。

更新1*:根据Compatibility Changes; * * IE11现在还为navigator.appName属性返回"Netscape",以反映HTML5标准并匹配其他浏览器的行为。另请参阅userAgent字符串here中的更改...有关功能检测here的详细信息... *
更新2*:* * Microsoft Edge
也会为navigator.appName返回"Netscape"。*

czq61nw1

czq61nw12#

根据Johnny Stenback的帖子:
很久以前,mozilla新闻组就讨论过这个问题,并且决定navigator.appName应该返回'Netscape',即使在mozilla中也是如此,因为如果要更改这一点,那么web上使用某些浏览器嗅探代码的每个页面都应该返回(这是当前网络的一个巨大组成部分)需要识别mozilla,这是不会发生的,也没有理由这样做,因为mozilla ==网景== mozilla只要内容开发者是保守的[原文如此]。
源代码here

0lvr5msh

0lvr5msh3#

从IE11开始,资源管理器在调用navigator.appName时也会返回“Netscape”;

  • 更新 * 虽然这个答案现在已经过时了,但下面是上述声明的链接:https://learn.microsoft.com/en-us/先前版本/windows/互联网资源管理器/ie开发人员/开发人员指南/bg 182625(v=vs.85)?重定向自=MSDN#遗留API添加更改和删除
uurv41yg

uurv41yg4#

现在你可以搜索浏览器检测的navigator.userAgent来寻找它的布局引擎。根据我的经验,它运行得相当好。看这个post

相关问题