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)