navigator.language返回一个字符串,该字符串代表用户的首先语言,通常是浏览器使用的语言。navigator.language为只读属性。

用法:

var lang = globalObj.navigator.language

globalObj.navigator.language字符串代表在RFC 4646中定义的语言版本.有效的语言代码例子包括:"en", "en-US","fr","es-ES",等。

 浏览器支持

属性 chrome IE Firefox Safari Opera
language Yes 11.0 1.0 Yes Yes

注释:IE10及IE10以下的版本,可以通过userLanguage, browserLanguage 获取:

var lang = navigator.browserLanguage;
//or
var lang = navigator.userLanguage;

但是IE10及IE10以下的版本返回的结果却不是一模一样的。

属性 IE6 IE7 IE8 IE9 IE10
browserLanguage
zh-cn zh-cn zh-cn zh-cn zh-CN

所以可以这样写:

var lang = navigator.userLanguage||window.navigator.language;
lang = lang.toLowerCase();

如果更改了浏览器语言,navigator.language会不会改变?

IE6-10:

1. 在IE浏览器中,选择Internet选项--》常规--》语言,删除中文简体,添加英语 [en],确定。

2. 在控制台中输入 navigator.userLanguage 显示的结果不是我们刚设置的en,还是之前的"zh-CN"。

navigator.userLanguage
//"zh-CN"

3. 打开Wireshark访问一个网站,抓包。

查看http header,我们发现Accept-Language: en\r\r改变了

所以在IE6-10浏览器中,修改浏览器的语言设置只会改变Accept-Language的值,而不会改变navigator.language.

Firefox:

1. 在Firefox浏览器中,选择 选项 --》内容--》选择。

2. 将英语[en]移到最上面。点击确定。

3. 在控制台中输入navigator.language.可以看到输出结果为"en"

4. 打开Wireshark,在Firefox浏览器中访问网站,抓包:

可以看到,Accept-Language: en,zh-cn;q=0.8,zh;q=0.5,en-us;q=0.3

在Firefox浏览器中,修改浏览器语言,改变navigator.language值,同时也改变了http header的Accept-Language的值。

所以如果更改了浏览器语言,navigator.language未必会改变。

navigator.languages

Chrome 32+及Firefox32+版本中,可以通过navigator.languages获取Accept-languages的值。

所以也可以这样写:

navigator.languages? navigator.languages[0] : (navigator.language || navigator.userLanguage)

参考文章:NavigatorLanguage.language

JavaScript for detecting browser language preference

navigator.language介绍的更多相关文章

  1. JS中的Navigator 对象

    Navigator 对象包含有关浏览器的信息. 很多时候我们需要在判断网页所处的浏览器和平台,Navigator为我们提供了便利 Navigator常见的对象属性如下: 属性 描述 appCodeNa ...

  2. js模块化开发——require.js的用法详细介绍(含jsonp)

    RequireJS的目标是鼓励代码的模块化,它使用了不同于传统<script>标签脚本加载步骤.可以用它回事.优化代码,但其主要的目的还是为了代码的模块化.它鼓励在使用脚本以moudle ...

  3. 通过浏览器navigator判断浏览器版本或者手机类型&&判断微信访问

    javascript 的navigator属性,不常用,但是用处也不少,主要用处是在做浏览器兼容的问题的时候,现在有的网站已经不兼容IE6,用户假如用IE6浏览网页的话,会提示浏览器升级等信息.或者判 ...

  4. navigator的一些冷知识

    { 监听屏幕旋转变化接口: orientationchange orientation.angle : 0 竖屏 , 90 向左横屏 , -90/270 向右横屏 , 180 倒屏 } screenO ...

  5. BOM 浏览器对象模型_window.navigator

    window.navigator 对象 包含浏览器和系统信息的 Navigator 对象. 通过这个属性 了解用户的环境信息 window.navigator.userAgent 返回浏览器的 Use ...

  6. JS中navigator对象详解

    <code class="language-html"><!doctype html> <html> <head> <meta ...

  7. 使用navigator对象,输出当前浏览器的信息

    <script type="text/javascript"> with(document) { write("你的浏览器信息:<ol>" ...

  8. js navigator对象

    原文:https://www.cnblogs.com/huyihao/p/6003110.html Navigator 对象包含有关浏览器的信息. 很多时候我们需要在判断网页所处的浏览器和平台,Nav ...

  9. JavaScript -- Navigator

    -----040-Navigator.html----- <!DOCTYPE html> <html> <head> <meta http-equiv=&qu ...

随机推荐

  1. java jps

    jps:虚拟机进程状况工具: 命令格式: jps [options] [hostid] hostid 为RMI注册表中注册的主机名. 执行样例: options 参数: 选项  作用 -q  只输出L ...

  2. 图像处理库CImg

    CImg 是一个用C++编写的开源数字图像处理库.   作者介绍   作者David Tschumperlé, 之前是法国La Rochelle大学的一名教授,现受雇于CNRS 图像组.据说作者从19 ...

  3. jQuery中jQuery.extend() 和 jQuery.fn.extend()的功能和区别

    昨天下午和今天上午断断续续的一直在看jQuery中jQuery.extend() 和 jQuery.fn.extend()两个函数的功能及区别,现在自认为是掌握的差不多了.好记性不如烂笔头,这里一方面 ...

  4. 解析Javascript事件冒泡机制(转)

    本文转自:http://blog.csdn.net/luanlouis/article/details/23927347 1. 事件 在浏览器客户端应用平台,基本生都是以事件驱动的,即某个事件发生,然 ...

  5. 获取文件的MD5码(C#)

    using System; using System.IO; using System.Security.Cryptography; using System.Text; namespace Test ...

  6. 流行的9个Java框架介绍: 优点、缺点等等

    流行的9个Java框架介绍: 优点.缺点等等 在 2018年,Java仍然是世界上最流行的编程语言.它拥有一个巨大的生态系统,在全世界有超过900万Java开发人员.虽然Java不是最直接的语言,但是 ...

  7. AJAX的JSON方式传回方法

    AJAX返回数据的类型有两种,一种是TEXT类型,一种是JSON类型. 使用TEXT类型,访问数据库后将结果拼接成字符串,返回时在拆分成数组使用. JSON直接将结果转成JSON数据,返回时直接使用. ...

  8. Hadoop2.6.2的Eclipse插件的使用

    欢迎转载,且请注明出处,在文章页面明显位置给出原文连接. 本文链接:http://www.cnblogs.com/zdfjf/p/5178197.html 首先给出eclipse插件的下载地址:htt ...

  9. java.lang.IllegalAccessException: Class XX can not access a member of class XXX with modifiers "private static"

    当前需求: 利用反射获取某一属性值运行结果:java.lang.IllegalAccessException: Class com.example.demo.test.Reflect can not ...

  10. 洛谷 P1009 阶乘之和

    题目描述 用高精度计算出S=1!+2!+3!+…+n!(n≤50) 其中“!”表示阶乘,例如:5!=5*4*3*2*1. 输入输出格式 输入格式: 一个正整数N. 输出格式: 一个正整数S,表示计算结 ...