动态创建script在IE中缓存js文件时导致编码不正确bug

$.each(scripts, function(){
if(!jsExist(this.src)){
var s = document.createElement("SCRIPT");
s.type = "text/javascript";
s.src = this.src;
document.body.appendChild(s);
}
});

 

用这种方式创建script标签,第一次进页面js里的中文显示正常,第二次进页面就发现乱码。

后来加了一句:

$.each(scripts, function(){
if(!jsExist(this.src)){
var s = document.createElement("SCRIPT");
s.type = "text/javascript";
s.src = this.src;

s.charset = 'gbk';
document.body.appendChild(s);
}
});

 

还是不对,然后就不知道怎么办,卡了很久。

 

后来发现s.charset = 'gbk';要写到s.src = this.src;前面,IE居然这么坑!

 

正确写法:

 

 

$.each(scripts, function(){
if(!jsExist(this.src)){
var s = document.createElement("SCRIPT");
s.type = "text/javascript";

s.charset = 'gbk';
s.src = this.src;

document.body.appendChild(s);
}
});

posted @ 2015-10-08 11:03  喵尾景虎  阅读(190)  评论(0编辑  收藏  举报