在IE中,YUI3.0.0动态加载JavaScript文件的bug
-
本页面编码是gb2312
-
利用YUI3.0.0动态加载utf8.js,该文件是utf-8编码,使用VIM编辑,文件包含JavaScript代码、中文和一些换行符
-
在IE中,刷新页面时,浏览器右下角出现错误提示“网页上有错误”
-
同样用YUI2.8.0加载也存在同样的错误,而YUI2.7.0则没有,这是因为在2.7.0中,添加script元素是:
<script id="..." type="text/javascript" charset="utf-8" src="utf-8.js"></script>
而在2.8.0和3.0.0中变成:
<script id="..." type="text/javascript" src="utf-8.js" charset="utf-8"></script>
-
利用随机参数阻止JavaScript文件缓存或者修改YUI3.0.0中加入charset属性的顺序都能避免这个错误
-
所以这个应该是IE在处理缓存文件时在编码问题上的bug,所以利用JavaScript动态加载JavaScript文件时,script元素的charset属性应该位于src属性前:
<script id="..." type="text/javascript" charset="utf-8" src="utf-8.js"></script>
同理,添加样式表的link元素也应该把charset属性放在href属性前。