加入收藏 | 网站地图 | | RSS | WAP
你好,游客 登录 注册 搜索
背景:
阅读内容  领跑条码、标签打印软件 | 来电弹出客户资料

动态执行javascript脚本时因ie文件缓存引起的乱码问题

[日期:2013-04-11] 作者: 来源: [字体: ]

loadJS函数动态创建一个script,设置src,charset后添加到head中。这里每次点击按钮会将a.js引入到该页面中,a.js内代码会创建一个p元素设置一段文本,然后添加到body上。第一次点击按钮,文字显示正常。第二次后,文字编码不正确了。 

效果如图:

先看下重现代码:gb2312.HTML 该文件编码为gb2312

<!DOCTYPE html>

<html>

 <head>

    <title></title>

    <meta charset="gb2312"/>

    <style>

        p {

            color: red;

        }

    </style>

 </head>

 <body>

    <button onclick="loadJS('a.js', 'utf-8')">测试</button>

    <script>

        function loadJS(src, charset) {

            var script = document.createElement('script');

            script.src = src;

            script.charset = charset;

            var head = document.getElementsByTagName('head')[0];             head.appendChild(script);

        }

    </script>

 </body>

</html> 

//a.js 文件编码时utf-8

var p = document.createElement('p');

p.innerHTML = 'IE缓存导致乱码';

document.body.appendChild(p); 

如果不是动态创建的script tag,直接写在html页面上,则没有问题。解决方式是换下src和charset属性的赋值顺序。

script.charset = charset; script.src = src;

即先给charset赋值。 

如果采用document.write方式载入js资源也不会出现该bug.

<script>

    function loadByWrite(url, charset) {

        var str = '<script type="text/JavaScript"' + ' src="' + url + '" charset="' + charset + '"><' + '/script>';

        document.write(str);

    }

</script>

<script> loadByWrite('a.js', 'utf-8') </script>

关键词:动态  乱码  缓存  脚本 

收藏 推荐 打印 | 录入:blue1000 | 阅读:
本文评论   查看全部评论 (2)
表情: 姓名: 字数
点评:
       
评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事/刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款
第 2 楼
* 匿名 发表于 2016/12/25 12:49:53
http://www.blue1000.com/bkhtml/c157/2010-10/69330.htm 2015-2016学年初二语文教学计划 http://www.135995.com/show/2.html 小学教学工作计划范文 http://www.135995.com/show/3840.html
第 1 楼
* 匿名 发表于 2016/12/24 12:49:00
http://www.blue1000.com/bkhtml/c157/2010-10/69330.htm 帮朋友过生日作文 http://www.135995.com/details/zs2394.html 帮妈妈做家务作文 http://www.135995.com/details/zs2423.html