• jq的getScript函数不支持chaset?override掉!


    其实我从来不用jq或者其他框架的,这两天偶然在一个小项目里面发现jq的一个小bug:getScript函数没有透传charset信息,如果试图在页面上加载一个跨编码的脚本的时候会导致编码错误。写了一个补丁函数覆盖掉原来的:

    $.getScript=function(url, callback , charset){
        $.ajax({
            url: url,
            dataType: "script",
            success:callback,
            scriptCharset:charset
        })
    }    

    这几年代码写得很少,轻喷。这里是demo代码 ,同时也到jq的github上提交了一个issue

    <!DOCTYPE html>
    <HTML>
    <HEAD>
    <meta charset="utf-8" />
    <script src="http://cdn.jsdelivr.net/jquery/1.11.1/jquery.js"></script>

    <SCRIPT LANGUAGE="JavaScript">
    <!--
    function log(s){
        $(
    "body")[0].innerHTML+="<p>"+s.replace(/ /g,"<br>").replace(/ /g,"&nbsp&nbsp&nbsp&nbsp")+"</p>";
    }
    function testBIG5(result){
        log(
    "BIG5 decode "+(result?"correctly":"<font color=red>incorrectly</font>"))
    }
    function testGB(result){
        log(
    "gb2312 decode "+(result?"correctly":"<font color=red>incorrectly</font>"))
    }
    function testUTF8(result){
        log(
    "utf-8 decode "+(result?"correctly":"<font color=red>incorrectly</font>"));
    }
    function testJP(result){
        log(
    "iso-2022-jp decode "+(result?"correctly":"<font color=red>incorrectly</font>"));
    }
    function testKR(result){
        log(
    "euc-kr decode "+(result?"correctly":"<font color=red>incorrectly</font>"));
    }
    $(document).ready(
    function(){

        $.when(
            log(
    "<i>old version of getScript:</i>"),
            log($.getScript.toString()),
            $.getScript(
    "http://stonelf.sinaapp.com/testGB.js"),
            $.getScript(
    "http://stonelf.sinaapp.com/testUTF8.js"),
            $.getScript(
    "http://stonelf.sinaapp.com/testBIG5.js"),
            $.getScript(
    "http://stonelf.sinaapp.com/testJP.js"),
            $.getScript(
    "http://stonelf.sinaapp.com/testKR.js")
        ).then(
    function(){

            $.getScript
    =function(url, callback , charset){
                $.ajax({
                    url: url,
                    dataType: 
    "script",
                    success:callback,
                    scriptCharset:charset
                })
            }    

            log(
    "<hr><i>new versioni of getScript:</i>");
            log($.getScript.toString()),
            $.getScript(
    "http://stonelf.sinaapp.com/testGB.js",undefined,"gb2312");
            $.getScript(
    "http://stonelf.sinaapp.com/testUTF8.js",undefined,"utf-8");
            $.getScript(
    "http://stonelf.sinaapp.com/testBIG5.js",undefined,"big5");
            $.getScript(
    "http://stonelf.sinaapp.com/testJP.js",undefined,"iso-2022-jp");
            $.getScript(
    "http://stonelf.sinaapp.com/testKR.js",undefined,"euc-kr");

        })
    })
    //-->
    </SCRIPT>
    </HEAD>
    <BODY>
    </BODY>
    </HTML>

  • 相关阅读:
    连通最大子数组和(结对开发)
    第五周学习进度情况
    敏捷开发方法综述
    第四周学习进度情况
    环形数组最大子数组之和
    第四次程序(结对开发)
    第三周学习进度情况
    第三次程序—四则运算(结对开发)
    构建之法阅读笔记02
    按照Right-BICEP要求对实验二进行测试
  • 原文地址:https://www.cnblogs.com/stonehuang/p/6603173.html
Copyright © 2020-2023  润新知