大夢想家

          5年開發工程師,2年實施經理,X年售前顧問,......
          數據加載中……
          JavaScript加載器
          今天無意間看到Scriptaculous項目,大概留意了以下他的加載器。

              此項目一共有5個JS文件,當要用此項目到自己的項目中時只需要:

          <script src="javascripts/prototype.js" type="text/javascript"></script>
          <script src="javascripts/scriptaculous.js" type="text/javascript"></script>

          就可以引入其他的四個JS了,這里的prototype.js并非必備,如果哦只需要某一個js被引入則可以使用:

          <script src="scriptaculous.js?load=effects,dragdrop" type="text/javascript"></script>
          是不是很好的功能?自己實現一個加載器就省去在頁面上大量的引入JS的工作了,現在讓我們再看看它的原理
          var Scriptaculous = {
            Version: 
          '1.6.5'
          ,
            require: 
          function(libraryName) 
          {
              
          // inserting via DOM fails in Safari 2.0, so brute force approach

              document.write('<script type="text/javascript" src="'+libraryName+'"></script>');
            }
          ,
            load: 
          function() 
          {
              
          if((typeof Prototype=='undefined'||
           
                 (
          typeof Element == 'undefined'||
           
                 (
          typeof Element.Methods=='undefined'||

                 parseFloat(Prototype.Version.split(
          ".")[0+ "." +
                            Prototype.Version.split(
          ".")[1]) < 1.5)
                 
          throw("script.aculo.us requires the Prototype JavaScript framework >= 1.5.0"
          );
              
              $A(document.getElementsByTagName(
          "script")).findAll( function(s) 
          {
                
          return (s.src && s.src.match(/scriptaculous.js(?.*)?$/
          ))
              }
          ).each( function(s) {
                
          var path = s.src.replace(/scriptaculous.js(?.*)?$/,''
          );
                
          var includes = s.src.match(/?.*load=([a-z,]*)/
          );
                (includes 
          ? includes[1] : 'builder,effects,dragdrop,controls,slider').split(','
          ).each(
                 
          function(include) { Scriptaculous.require(path+include+'.js') }
          );
              }
          );
            }

          }


          Scriptaculous.load();

          一共就兩個方法,load()判斷加入的JS是什么目錄下的什么文件,以及有沒有prototype.js和他的版本;require()直接調用document.write()朝頁面追加JS的引入代碼。自己寫加載器的時候只需要修改load()方法,加入自己的規則以及文件名稱,其他的都不需要修改,這樣就可以在頁面上省去大量代碼了


          客戶虐我千百遍,我待客戶如初戀!

          posted on 2007-07-01 20:40 阿南 閱讀(1733) 評論(1)  編輯  收藏 所屬分類: JavaScript

          評論

          # re: JavaScript加載器 2008-06-30 13:08 XLEdoo

          需要注意一下,這里使用了$A和其他的prototype方法,必須首先引入prototype以后才能使用,如果想改來自己用的話需要注意哈!
            回復  更多評論    
          主站蜘蛛池模板: 武邑县| 西城区| 镇康县| 安溪县| 扶余县| 富民县| 海城市| 柏乡县| 锡林郭勒盟| 和平区| 盱眙县| 永新县| 新余市| 衡东县| 清远市| 栾川县| 鄯善县| 尚义县| 故城县| 出国| 贡觉县| 珠海市| 通山县| 通州市| 秦安县| 隆回县| 罗源县| 张家口市| 清涧县| 新干县| 甘洛县| 象山县| 宜兰市| 云霄县| 绥江县| 新营市| 嘉善县| 松溪县| 恩平市| 隆安县| 陆丰市|