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

C g*_*ics 45 html javascript browser firefox dom

为什么navigator.appName返回Safari,Firefox和Chrome的"Netscape"?

他们与旧浏览器Netscape有什么关系?可能是因为DOM0?

Onu*_*rım 42

是的,这是兼容性问题而不是依赖.
MDN说:"这最初是DOM Level 0的一部分,但自HTML5规范以来就已包含在内."

在此处查看Mozilla文档.

BTW; 这就是为什么这不能用于浏览器检测.浏览器检测是一种糟糕的做法,您应该尽可能避免使用它.做特征检测来代替.但是,如果有人坚持这一点; 他们应该使用该userAgent属性.

更新1:根据兼容性变化 ; IE11现在也返回"Netscape"navigator.appName属性,以反映HTML5标准,并符合其他浏览器的行为.另请参阅变化userAgent这里 ...更多特征检测在这里 ...

更新2:微软边缘也返回"Netscape"navigator.appName.

  • 有时候浏览器检测是绝对必要的.教条是它很糟糕,但肯定有很多情况下你别无选择. (10认同)

eng*_*ree 7

基于Johnny Stenback的帖子:

这是在很久以前对mozilla新闻组进行争论的,并且决定navigator.appName即使在mozilla中也应该返回'Netscape',因为如果要在网页上更改每个页面使用一些浏览器嗅探代码(这是一个巨大的部分)当前的网页)需要识别mozilla,并且这不会发生,并且没有理由这样做,因为mozilla == netscape == mozilla,就内容开发者而言.

来源于.