emu in blogjava

            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            171 隨筆 :: 103 文章 :: 1052 評論 :: 2 Trackbacks

          其實我從來不用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(/\n/g,"<br>").replace(/\t/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>
          posted on 2014-11-19 19:40 emu 閱讀(1399) 評論(1)  編輯  收藏

          評論

          # re: jq的getScript函數不支持chaset?override掉! 2014-12-05 14:28 歌詞網站
          學習了,支持一下。  回復  更多評論
            


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 凌海市| 岱山县| 永济市| 涪陵区| 德阳市| 肇州县| 东乡族自治县| 孝义市| 罗定市| 象山县| 电白县| 蚌埠市| 望城县| 临夏县| 五莲县| 江安县| 银川市| 衡水市| 陵川县| 汾西县| 东乡县| 孟津县| 莒南县| 临江市| 无锡市| 阿荣旗| 海晏县| 周至县| 南部县| 双辽市| 昌都县| 苍梧县| 杭锦旗| 仁化县| 巴林左旗| 泾源县| 洮南市| 华容县| 新营市| 定南县| 高要市|