zoukankan      html  css  js  c++  java
  • 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>

  • 相关阅读:
    C#关机代码实例详解
    如何设计通用的网站模板
    C# XML解析方式实例解析1
    ASP.NET配置错误页面浅析
    几种常用的C#排序方法简介
    简述C# XML解析方法的特点及应用
    请不要相信
    浅谈ASP.NET Forms验证
    设计友好的错误信息页面
    详解.NET中容易混淆的委托与接口
  • 原文地址:https://www.cnblogs.com/stonehuang/p/6603173.html
Copyright © 2011-2022 走看看