大夢想家

          5年開發(fā)工程師,2年實(shí)施經(jīng)理,X年售前顧問,......
          數(shù)據(jù)加載中……
          JavaScript加載器
          今天無意間看到Scriptaculous項(xiàng)目,大概留意了以下他的加載器。

              此項(xiàng)目一共有5個(gè)JS文件,當(dāng)要用此項(xiàng)目到自己的項(xiàng)目中時(shí)只需要:

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

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

          <script src="scriptaculous.js?load=effects,dragdrop" type="text/javascript"></script>
          是不是很好的功能?自己實(shí)現(xiàn)一個(gè)加載器就省去在頁面上大量的引入JS的工作了,現(xiàn)在讓我們再看看它的原理
          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();

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


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

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

          評(píng)論

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

          需要注意一下,這里使用了$A和其他的prototype方法,必須首先引入prototype以后才能使用,如果想改來自己用的話需要注意哈!

          只有注冊用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 胶南市| 错那县| 上虞市| 西安市| 绥德县| 将乐县| 青铜峡市| 延长县| 桐梓县| 郴州市| 延安市| 湖州市| 梁山县| 浦北县| 宁陕县| 贡嘎县| 德江县| 沐川县| 拉萨市| 奎屯市| 台北市| 上思县| 尉氏县| 潞城市| 天峻县| 高安市| 榆社县| 台江县| 苏州市| 观塘区| 南阳市| 岳普湖县| 高密市| 洱源县| 德化县| 南宁市| 榆林市| 澄城县| 云林县| 屯留县| 翼城县|