我一直在尝试使用JavaScript检测浏览器的语言偏好。
如果我在中的IE中设置了浏览器语言Tools>Internet Options>General>Languages
,如何使用JavaScript读取此值?
Firefox也有同样的问题。我无法检测到tools>options>content>languages
使用的设置navigator.language
。
使用 navigator.userLanguage
,它通过Start>ControlPanel>RegionalandLanguageOptions>Regional Options
选项卡检测完成的设置
。
我已经测试过navigator.browserLanguage
,navigator.systemLanguage
但均未返回第一个设置的值(Tools>InternetOptions>General>Languages
)
我认为这里的主要问题是浏览器设置实际上不会影响navigator.language
通过javascript获取的属性。
它们确实会影响HTTP’Accept-
Language’标头,但看来此值根本无法通过javascript使用。(可能是为什么@anddoutoi指出他找不到不涉及服务器端的引用)。
(注意:这是一种hack,仅当您没有可用的后端可以使用时才能使用。通常,除非您的浏览器具有很高的访问权限,否则您不应在页面中调用第三方托管的javascript文件对主机的信任级别。)
我打算将其永久保留在那里,请随时在您的代码中使用它。
这是一些使用jQuery的示例代码
$.ajax({
url: "http://ajaxhttpheaders.appspot.com",
dataType: 'jsonp',
success: function(headers) {
language = headers['Accept-Language'];
nowDoSomethingWithIt(language);
}
});
希望有人觉得这有用。
编辑2:按要求,这里是在AppEngine上运行的代码(实际上是微不足道的):
class MainPage(webapp.RequestHandler):
def get(self):
headers = self.request.headers
callback = self.request.get('callback')
if callback:
self.response.headers['Content-Type'] = 'application/javascript'
self.response.out.write(callback + "(")
self.response.out.write(headers)
self.response.out.write(")")
else:
self.response.headers['Content-Type'] = 'text/plain'
self.response.out.write("I need a callback=")
application = webapp.WSGIApplication(
[('/', MainPage)],
debug=False)
def main():
run_wsgi_app(application)
if __name__ == "__main__":
main()
问题内容: 我使用以下PHP脚本作为网站索引。 该脚本应包括一个特定页面,具体取决于浏览器的语言(自动检测到)。 该脚本无法在所有浏览器上正常运行,因此它始终包含任何检测到的语言(问题的原因很可能是未考虑某些Accept- Language标头的问题)。 您能否建议我一个更强大的解决方案? 问题答案: 你为什么不保持它简单干净
到目前为止,我一直在使用重写,仅使用以下代码: 现在我潜入一个多语言网站,我想检测用户的浏览器语言,并根据这些信息将他重定向到他的语言版本 要改写这个: 成
问题内容: 是否可以从httpsession对象(javax.servlet.http.HttpSession)派生首选语言?可以从servletrequest中获取它,但我没有。感谢您的任何想法。斯文 问题答案: 用户的首选语言环境可以用作请求标头(“接受语言”)。它由用户的浏览器根据其首选项自动填充。然后,您可以将此信息存储在用户的会话中,并在以后适当时检索它。
问题内容: 如何使用JavaScript确定确切的浏览器和版本? 问题答案: 顾名思义,这将告诉您浏览器提供的名称和版本号。 当您在多个浏览器上测试新代码时,它对于对测试结果和错误结果进行排序非常方便。
问题内容: 如何使用JavaScript检测Safari浏览器?我在下面尝试过代码,它不仅可以检测Safari,还可以检测Chrome浏览器。 问题答案: 您可以轻松地使用Chrome的索引来过滤掉Chrome:
Web Storage 是一项非常重要,并且很实用的技术,因此浏览器的支持度非常高,所有的主流浏览器,包括IE8,都在一定程度上支持Web Storage。尽管如此,最好还是像往常一样,在使用前先检测浏览器是否支持Web Storage。 在Web Storage中,可以直接使用 window 对象访问特定域下存储的数据。因此,只需检测浏览器是否支持 window.localStorage 或 w