为什么navigator.appName在Safari、Firefox和Chrome中返回“Netscape”?他们和旧的浏览器网景有什么关系?会不会是因为DOM0?
navigator.appName
c90pui9n1#
是的,这是兼容性问题,不值得信赖。
参见Mozilla documentation here。顺便说一句,这就是为什么这个不能用于浏览器检测。浏览器检测是一个坏的做法,你应该总是尽可能避免它。做**feature detection**代替。但如果有人坚持这样做;它们应该使用userAgent属性。
userAgent
更新1*:根据Compatibility Changes; * * IE11现在还为navigator.appName属性返回"Netscape",以反映HTML5标准并匹配其他浏览器的行为。另请参阅userAgent字符串here中的更改...有关功能检测here的详细信息... *更新2*:* * Microsoft Edge也会为navigator.appName返回"Netscape"。*
"Netscape"
czq61nw12#
根据Johnny Stenback的帖子:很久以前,mozilla新闻组就讨论过这个问题,并且决定navigator.appName应该返回'Netscape',即使在mozilla中也是如此,因为如果要更改这一点,那么web上使用某些浏览器嗅探代码的每个页面都应该返回(这是当前网络的一个巨大组成部分)需要识别mozilla,这是不会发生的,也没有理由这样做,因为mozilla ==网景== mozilla只要内容开发者是保守的[原文如此]。源代码here。
'Netscape'
0lvr5msh3#
从IE11开始,资源管理器在调用navigator.appName时也会返回“Netscape”;
uurv41yg4#
现在你可以搜索浏览器检测的navigator.userAgent来寻找它的布局引擎。根据我的经验,它运行得相当好。看这个post。
4条答案
按热度按时间c90pui9n1#
是的,这是兼容性问题,不值得信赖。
参见Mozilla documentation here。
顺便说一句,这就是为什么这个不能用于浏览器检测。浏览器检测是一个坏的做法,你应该总是尽可能避免它。做**feature detection**代替。但如果有人坚持这样做;它们应该使用
userAgent
属性。更新1*:根据Compatibility Changes; * * IE11现在还为
navigator.appName
属性返回"Netscape"
,以反映HTML5标准并匹配其他浏览器的行为。另请参阅userAgent
字符串here中的更改...有关功能检测here的详细信息... *更新2*:* * Microsoft Edge也会为
navigator.appName
返回"Netscape"
。*czq61nw12#
根据Johnny Stenback的帖子:
很久以前,mozilla新闻组就讨论过这个问题,并且决定
navigator.appName
应该返回'Netscape'
,即使在mozilla中也是如此,因为如果要更改这一点,那么web上使用某些浏览器嗅探代码的每个页面都应该返回(这是当前网络的一个巨大组成部分)需要识别mozilla,这是不会发生的,也没有理由这样做,因为mozilla ==网景== mozilla只要内容开发者是保守的[原文如此]。源代码here。
0lvr5msh3#
从IE11开始,资源管理器在调用navigator.appName时也会返回“Netscape”;
uurv41yg4#
现在你可以搜索浏览器检测的navigator.userAgent来寻找它的布局引擎。根据我的经验,它运行得相当好。看这个post。