在我测试的所有浏览器(IE,Firefox,Chrome,Safari,Opera,Yandex)中,window.navigator.appCodeName返回"Mozilla".我知道网络浏览器"劫持"用户代理以欺骗页面的历史,认为它们与所有其他浏览器兼容,而且我满足于appCodeName只是作为该主体的扩展,但是,我读了标准,并且事实证明,标准本身说这将是硬编码的价值"Mozilla".所以这些浏览器实际上都遵循这些标准.
为什么这个价值存在?我认为它留作将来使用,但计划是什么?
这个问题并没有真正解释它,因为它所说的只是因为浏览器劫持了它,我已经理解了,但我更想知道过去或未来的用途是什么.
来自NavigatorID.appCodeName- Web API 接口:
在任何浏览器上总是
NavigatorID.appCodeName返回, 。'Mozilla'保留此属性只是为了兼容性目的。注意:请勿依赖此属性返回真实的产品名称。所有浏览器都返回“Mozilla”作为该属性的值。
NavigatorID.product这与始终返回字符串类似'Gecko'。
正如 Sebastian G. 在他的回答中解释的那样,它用于用户代理嗅探。Mozilla这意味着在某个时间点,非 Mozilla 浏览器的UA 字符串中不包含该内容。"Mozilla"虽然我不确定 Mozilla/Mozilla 浏览器在 UA 字符串中添加 UA 字符串与"Mozilla"在非 Mozilla 浏览器中添加 UA 字符串之间的时间间隔有多长。
我找不到任何关于该appCodeName属性何时在对象中首次可用的文档navigator(大概是在 2000 年之前,因为它在 2000 年被称为“很久以前”)。
您可能会对本文感兴趣:流行浏览器中的代理字符串