このページの目次

外部の JS を読み込むための JS (CSS でいう import.css)

概要

この CSS の import.css のように、外部の JavaScript を HTML に読み込むことができます。読み込むときのパスは相対パス、サイトルートからのパス、フルパスなど、何でも大丈夫です。

複数のライブラリなどを XHTML に読み込む際、XHTML の head 要素内が script 要素だらけになるのを防ぐことが出来ます。

使い方

jsloader.js 内の conf で設定の変更が行えます。

jsloader.js のソース内の

conf = {
	thisName : "jsloader.js",//このJSのファイル名
	loadJS    : ["読み込むJSへのパス1","読み込むJSへのパス2","読み込むJSへのパス3","読み込むJSへのパス4"]//JS達のパス。相対で指定したい場合はこのJSからみたパス
}

を変更することで設定の変更が行えます。読み込む JavaScript へのパスついては増減は自由です。

次に、ダウンロードした jsloader.js を XHTML ファイルの head 要素内などで読み込んでください。

<script type="text/javascript" src="js/jsloader.js"></script>

ソースコード

/*====================================================================================================
//////////////////////////////////////////////////////////////////////////////////////////////////////

 Author : http://www.yomotsu.net
 created: 2007/11/01
 update : 2007/12/22
 Licensed under the GNU Lesser General Public License
 JSを読み込むためのスクリプト

//////////////////////////////////////////////////////////////////////////////////////////////////////
====================================================================================================*/

var yomotsuLoader = {

	conf : {
		thisName : "jsloader.js",
		loadJS   : ["alert1.js","../js2/alert2.js"]
	},

	
	main : function(){
		var script = document.getElementsByTagName("script");
		for(i=0;i<script.length;i++){
			if(script[i].getAttribute("src").indexOf(yomotsuLoader.conf.thisName)!=0){
								
				locationStr = location+""
				var DirArray = new Array();
				N=0;
				while (true) { 
				 DirArray[N] = locationStr.slice(0,locationStr.indexOf("/"));
				 locationStr = locationStr.slice(locationStr.indexOf("/")+1,locationStr.length);
				 N++;
				 if (locationStr.indexOf("/")==-1) {
					break;
				 }
				}
				
				
				var scriptSrc = script[i].getAttribute("src");
				scriptSrc      = scriptSrc.replace(/\.\.\//g, "");
				var upperDirLength = script[i].getAttribute("src").match(/\.\.\//g) ? script[i].getAttribute("src").match(/\.\.\//g).length : 0 ;
				
				var thisDir = ""
				for(j=0;j<(DirArray.length - upperDirLength);j++){
					thisDir += DirArray[j]+'/'
				}
				thisDir = thisDir.slice(0, -1) + '/' + scriptSrc ;
				thisDir = thisDir.slice(0,-1 * yomotsuLoader.conf.thisName.length)
		

		
				for(j=0;j<yomotsuLoader.conf.loadJS.length;j++){
					
					if (!yomotsuLoader.conf.loadJS[j].match(/^\/|^http\:|^https\:|^\.\.\//)) {
						yomotsuLoader.writeJS(thisDir+yomotsuLoader.conf.loadJS[j])
					}
					else if (yomotsuLoader.conf.loadJS[j].match(/^\/|^http\:|^https\:/)) {
						yomotsuLoader.writeJS(yomotsuLoader.conf.loadJS[j])
					}
					else if (yomotsuLoader.conf.loadJS[j].match(/^\.\.\//)) {
						
						var writeDirArray = new Array();
						
						writeDir = thisDir;
						N=0;
						while (true) { 
							writeDirArray[N] = writeDir.slice(0,writeDir.indexOf("/"));
							writeDir = writeDir.slice(writeDir.indexOf("/")+1,writeDir.length);
							N++;
							if (writeDir.indexOf("/")==-1) {
								break;
							}
						}
						
						upperDirArray = yomotsuLoader.conf.loadJS[j].match(/\.\.\//g);
						var dir =""
						for(k=0;k<(writeDirArray.length - upperDirArray.length);k++){
							dir += writeDirArray[k]+'/'
						}

						// remove "../"
						yomotsuLoader.conf.loadJS[j] = dir + yomotsuLoader.conf.loadJS[j].replace(/\.\.\//g, "")
						yomotsuLoader.writeJS(yomotsuLoader.conf.loadJS[j])
						
					}
				}
				
			break;
			}
		}
	}, // END OF yomotsuLoader.main
		
	writeJS : function(filePath){
		script = document.createElement("script");
		script.setAttribute("src",filePath);
		script.setAttribute("type","text/javascript");
		document.getElementsByTagName("head")[0].appendChild(script);
	}
	
}

yomotsuLoader.main()


トラックバックURI

http://www.yomotsu.net/lab/javascripts/jsloader/trackback

この記事へのコメントはまだありません

コメントフォーム

コメント

コメントでは一部の XHTML タグを使用できます。 : <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

実験室に戻る

著作権情報等

Copyright © 2004-2008 yomotsu-net. Some Rights Reserved.