navigator.language返回一個字符串,該字符串表明用戶的首先語言,一般是瀏覽器使用的語言。navigator.language爲只讀屬性。javascript
用法:java
var lang = globalObj.navigator.language
globalObj.navigator.language字符串表明在RFC 4646中定義的語言版本.有效的語言代碼例子包括:"en", "en-US","fr","es-ES",等。chrome
瀏覽器支持瀏覽器
屬性 | 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如下的版本返回的結果卻不是如出一轍的。spa
屬性 | IE6 | IE7 | IE8 | IE9 | IE10 |
browserLanguage |
zh-cn | zh-cn | zh-cn | zh-cn | zh-CN |
因此能夠這樣寫:firefox
var lang = navigator.userLanguage||window.navigator.language; lang = lang.toLowerCase();
若是更改了瀏覽器語言,navigator.language會不會改變?code
IE6-10:blog
1. 在IE瀏覽器中,選擇Internet選項--》常規--》語言,刪除中文簡體,添加英語 [en],肯定。ip
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未必會改變。
Chrome 32+及Firefox32+版本中,能夠經過navigator.languages獲取Accept-languages的值。
因此也能夠這樣寫:
navigator.languages? navigator.languages[0] : (navigator.language || navigator.userLanguage)