我在JavaScript中编写了一些代码,使用window.navigator.language
和navigator.browserLanguage
对象来搜索包含这些可能值的数组。
我想要实现的是检查数组以查看其中的任何值是否与浏览器语言相匹配。我知道您可以使用PHP并检查HTTP标头但我需要在客户端执行此检查。无论如何,我已经编写了下面的代码但由于某种原因它似乎没有返回我想要的值。我写的函数是基于每次浏览器语言与数组中的值匹配时它将返回true,否则它将返回false。但是每次运行该函数时它都会返回true!我究竟做错了什么?代码如下。
JavaScript的:
var langArray = new Array("en","en-GB","en-US","fr","de","en-gb","en-us");
function checkforIE() {
if (navigator.browserLanguage) { //if the navigator.browserLanguage is supported (IE only)
for(var i=0;i<langArray.length;i++) {
if(this[i] = navigator.browserLanguage) {
return true;
}
else {
return false;
}
}
}
}
function checkforFirefox() {
if (window.navigator.language) { //if the window.navigator.language is supported
for (var i=0;i<langArray.length;i++) {
if(window.navigator.language==this[i]) {
return true;
}
else {
return false;
}
}
}
}
HTML:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script type="text/javascript" src="test-browser.js"></script>
<title>Test Browser support</title>
</head>
<body>
<h2>Test browser support</h2>
<a href="#" onclick="checkforIE(); checkforFirefox();">Click here</a>
</body>
</html>
提前致谢。
答案 0 :(得分:1)
this[i]
应为langArray[i]
。您希望this
引用langArray
,但这不正确。 this
是指window
。
此外,您没有对返回值执行任何操作。要合并您的函数行为,请使用:
var lang = checkforIE() || checkforFirefox(); //If IE, use IE, otherwise, use FF
if(lang) alert('Language supported');
答案 1 :(得分:1)
this
例如:
function checkforIE() {
if (navigator.browserLanguage) { //if the navigator.browserLanguage is supported (IE only)
for(var i=0;i<langArray.length;i++) {
if(langArray[i] == navigator.browserLanguage) { // == for comparison
// and fetch from the array
return true;
}
}
}
return false; // only return false if all failed
}