我想访问用户浏览器设置并更改浏览器语言,这是否可以使用Javascript?
如果可能,我该如何访问? (请提供示例代码)
答案 0 :(得分:6)
您可以检测,但无法设置。
var lang = navigator.language || navigator.userLanguage;
// navigator.language : Netscape & Firefox
// navigator.userLanguage : Internet Explorer
如果要输出不同的语言,最好的方法是在服务器端执行。之一:
答案 1 :(得分:5)
不,这是不可能的。如果你打开一个页面,你的浏览器会变成阿拉伯语(或其他一些你看不懂的语言),你会怎么找到它?
答案 2 :(得分:4)
这是不可能的,也是一个坏主意。更好的想法是检测浏览器的语言,这可能做得相当好,并要求用户更改它(假设更改是绝对必要的)。
答案 3 :(得分:2)
如果您真正想要做的是检测用户正在使用的语言,这就是您想要做的事情,因为在服务器端,没有任何内容会让访问者更多地惹恼他们的浏览器偏好设置,请阅读{ {1}}所有现代浏览器发送的HTTP请求标头,它应包含您需要的所有信息。如果没有,请假设您最大的受众语言。
查看RFC2616 Section 14.4以获取有关Accept-Language
及其使用的更多信息。
答案 4 :(得分:1)
在网页上使用JavaScript绝对不可能。
浏览器扩展程序可能有权更改此权限 - 我不确定,它还取决于浏览器。但是,建立这样的扩展需要相当多的技能和工作。
答案 5 :(得分:0)
如果您是通过Chrome扩展程序执行此操作,则可以这样做。
将this answer选中与contentScript.js
中的类似问题和locale-switcher Chrome extension:
let locale = null;
chrome.storage.local.get(["locale"], result => {
if (result) {
locale = result.locale;
}
if (locale) embedScript();
});
const embedScript = () => {
const code = `
(() => {
Object.defineProperties(Navigator.prototype, {
language: {
value: '${locale}',
configurable: false,
enumerable: true,
writable: false
},
languages: {
value: ['${locale}'],
configurable: false,
enumerable: true,
writable: false
}
});
})();`;
const script = document.createElement("script");
script.textContent = code;
document.documentElement.prepend(script);
script.remove();
};
我知道时机(此问题在此答案问了10年之前问过),如果您是此扩展的作者,那将特别有趣。