navigator.language何时与navigator.languages [0]不同?

时间:2018-10-26 08:15:48

标签: javascript android iphone webview

我正在研究浏览器指纹。在应用的网络视图中工作的js将通过获取navigator.language.substr(0,2) == navigator.languages[0].substr(0,2)的结果来检测用户是否对语言撒谎。

我们发现大约有3%的用户对语言(navigator.language.substr(0,2) != navigator.languages[0].substr(0,2)撒谎。 通过useragent,我们发现这些移动设备是:

  • 一些华为手机(具有Android 5.1,Android 6.0,Android 7.0,Android 8.0.0 ...)
  • 某些iPhone(具有OS 9_1,OS 4_3_2,OS 5_1_1,OS 5_0 ...)
  • ...

这些用户是否说谎?是否有任何设备或浏览器的原因会导致navigator.language.substr(0,2) != navigator.languages[0].substr(0,2)

1 个答案:

答案 0 :(得分:1)

请参阅browser compatibility information。上面写着:

  

在Chrome中,navigator.language是浏览器用户界面的语言,并且不能保证等于navigator.languages[0]

     

在Firefox中,navigator.languages属性的值取自intl.accept_languages首选项。

它还说Safari完全兼容,但是也许不是旧版本吗?