Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript window.navigator.appCodeName的用途是什么?_Javascript_Html - Fatal编程技术网

Javascript window.navigator.appCodeName的用途是什么?

Javascript window.navigator.appCodeName的用途是什么?,javascript,html,Javascript,Html,在我测试过的所有浏览器(如Firefox、Chrome、Safari、Opera、Yandex)中,window.navigator.appCodeName返回“Mozilla”。我知道web浏览器“劫持”用户代理以欺骗页面使其认为它们与所有其他浏览器兼容的历史,我满足于生活在appCodeName只是作为该原则的扩展,然而,我读到,原来标准本身说这将是硬编码的值“Mozilla”。所以所有这些浏览器实际上都遵循标准 为什么会存在这个值?我想它是为将来使用而保留的,但计划是什么 没有真正解释它,

在我测试过的所有浏览器(如Firefox、Chrome、Safari、Opera、Yandex)中,
window.navigator.appCodeName
返回
“Mozilla”
。我知道web浏览器“劫持”用户代理以欺骗页面使其认为它们与所有其他浏览器兼容的历史,我满足于生活在
appCodeName
只是作为该原则的扩展,然而,我读到,原来标准本身说这将是硬编码的值“Mozilla”。所以所有这些浏览器实际上都遵循标准

为什么会存在这个值?我想它是为将来使用而保留的,但计划是什么

没有真正解释它,因为它所说的都是因为浏览器劫持了它,我已经理解了,但我更想知道过去或未来的用途是什么。

来自:

在任何浏览器上,
NavigatorID.appCodeName
始终返回
'Mozilla'
。此属性仅出于兼容性目的而保留

注意:不要依赖此属性返回真实的产品名称。所有浏览器都会返回“Mozilla”作为此属性的值

这类似于
NavigatorID.product
,它总是返回字符串
“Gecko”

正如Sebastian G.在中所解释的,它被用于用户代理嗅探。这意味着在某个时间点,非Mozilla浏览器的UA字符串中不包含
Mozilla
。尽管我不确定基于Mozilla/Mozilla的浏览器在UA字符串中包含
“Mozilla”
,并且添加了
,这段时间间隔有多长非Mozilla浏览器中的Mozilla“

我找不到任何关于
appCodeName
属性首次在
navigator
对象中可用的文档(可能是在2000年之前)

您可能对本文感兴趣:

浏览器之间的战争 这是一个历史和兼容的目的

这一切都是从第一批浏览器出现时开始的。很快,功能实现之战就开始了(毕竟还没有结束)。他们希望开发人员使用他们的浏览器

由于功能检测在当时不是一件事,浏览器嗅探是检测功能是否可用的热门方法。因此,开发人员四处嗅探,并仅为特定浏览器实现了漂亮的新功能。但是,其他浏览器供应商也实现了该功能,但用户没有看到,b因为它不是“Mozilla”(例如)

解决方案?非Mozilla浏览器的用户也应该看到这个漂亮的小功能,并按预期使用网站-所以他们都开始撒谎



简而言之就是这样。它不是为将来的计划保留的,而是为过去的内容访问保留的。它仍然是这样的,因为网络是为持久而设计的。因此,今天你可以访问一个非常旧的网站,获得与过去一样的所有信息和功能


原意
该属性的首要用途是表示浏览器的内部代码名(如Android 5的“棒棒糖”).Mozilla是最早实现它的人之一,可能是作为JS开发人员探索的API或他们自己的脚本。它旨在单独表示每个浏览器的代码名。但如前所述,历史走了另一条路。

和IE11、Chrome、Firefox和Safari返回appName“Netscape“:)我重读了你的问题,我同意它并不像我想象的那样完全重复。很抱歉。不幸的是,我不认为有任何appCodeName的历史记录,也不知道当时创建appCodeName的确切原因。这些东西可以追溯到90年代中期。是的,我注意到有两个类似的值。以前的目的是什么?是否所有浏览器都始终使用“Mozilla”值,或者在过去有过其他值?我相信所有浏览器(可能除了一些非常模糊的浏览器)都使用Mozilla值,因为它们实际上是基于Mozilla的,或者假装是Mozilla。如果所有浏览器中的值都是“Mozilla”值,那么,这怎么可能成为实际使用的价值呢?“其他”的说法是什么?如果(mozilla){showContent();}或者{neverRuns();}啊,那么appCodeName可能在某一点上不会是“mozilla”,至少在很短的一段时间内是这样。你分享了一篇优秀的文章(“流行浏览器中的代理字符串”)“因为网络是为持久而设计的。因此,今天你可以访问一个非常古老的网站,获取所有信息和功能,就像过去一样