在IE中,YUI3.0.0动态加载JavaScript文件的bug

说明|评论

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