今天無意間看到
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è)加載器就省去在頁(yè)面上大量的引入JS的工作了,現(xiàn)在讓我們?cè)倏纯此脑?/pre>
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()朝頁(yè)面追加JS的引入代碼。自己寫加載器的時(shí)候只需要修改load()方法,加入自己的規(guī)則以及文件名稱,其他的都不需要修改,這樣就可以在頁(yè)面上省去大量代碼了
客戶虐我千百遍,我待客戶如初戀!