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 閱讀(1393) 評論(1)  編輯  收藏

          評論

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


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


          網站導航:
           
          主站蜘蛛池模板: 万山特区| 岐山县| 安龙县| 兴海县| 中方县| 石城县| 哈密市| 怀化市| 古交市| 淮南市| 上思县| 望谟县| 黔西| 扶余县| 湘潭市| 大冶市| 梓潼县| 辰溪县| 红安县| 黄山市| 四子王旗| 沧州市| 棋牌| 海南省| 新乡市| 汾阳市| 错那县| 温州市| 三江| 遵义县| 寿阳县| 榆林市| 锡林浩特市| 临湘市| 称多县| 和顺县| 鄂伦春自治旗| 阿拉尔市| 青阳县| 东乡县| 兴国县|