为什么这段代码在IE&苹果浏览器?

时间:2011-11-14 13:57:39

标签: javascript html browser

我的任务是编写一些代码,无论大小如何,都会在广告的右上角放置一个小图标。根据用户的语言(在这种情况下,我使用的是浏览器语言),它将更改图标(基于某个服务器上的图像库),并随后更改该图像的点击URL。我知道我可以通过使用HTTP标头读取OS语言来实现这一点,但我不能这样做,它需要在服务器端完成。该脚本是由我编写的,但HTML是由其他人继承的 - 我也有能力编辑它们。

目前,该代码适用于Firefox,Chrome和Opera,但是当我在IE和Safari中将默认浏览器语言设为另一种欧洲语言(比如法语)时,该代码无效。!!这让我很生气,所以如果你能帮助我,我会非常感激。根据一些建议,这里有一个实例:

现场演示: http://jsfiddle.net/Juu7t/

编辑:是的,所以在玩完代码之后,我仍然无法理解为什么它不起作用。本质上发生的是默认图像将加载(对于IE和Safari),但它不会根据浏览器语言交换图像。 JavaScript控制台没有显示任何错误,Firebug也没有帮助我!

EDIT2:是的,所以我编写了这个小函数来测试Internet Explorer是否真正正确地阅读了该语言。 (我正在使用IE9):

function checkIE () {
if ((navigator.browserLanguage) || (window.navigator.language)) {
var testbrowser = navigator.browserLanguage || window.navigator.language;
alert(testbrowser);
}   
}
checkIE();

即使我将IE中的语言更改为“法语”即“fr”,它仍会返回“en-US”!!我做错了什么,或者我是否从导航器对象中读取了错误的值?!

1 个答案:

答案 0 :(得分:0)

我也在寻找解决方案,我在帖子中找到了解决方案

$.ajax({ 
  url: "http://ajaxhttpheaders.appspot.com", 
  dataType: 'jsonp', 
  success: function(headers) {
    language = headers['Accept-Language'];
    nowDoSomethingWithIt(language);
  }
});

您可以查看完整的详细信息here