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>

  • 相关阅读:
    阅读INI档
    jQuery遍历table中间tr td并获得td价值
    PB控制性能TreeView
    [POJ 3311]Hie with the Pie——谈论TSP难题DP解决方法
    数据结构 线性表
    ORACLE11G RAC 施加以分离不同的实例.TAF
    一起学习android使用一个回调函数onCreateDialog实现负载对话(23)
    [cocos2d-x 3.0] 触摸显示器
    lua学习笔记10:lua简单的命令行
    Matlab图像处理系列4———傅立叶变换和反变换的图像
  • 原文地址:https://www.cnblogs.com/stonehuang/p/6603173.html
Copyright © 2011-2022 走看看