javascriptの中で、jsファイルを動的にロードするための様々な解決方法をまとめました.

3007 ワード

一つの比較は全部ダイナミックに方法を加えています.
 
  
/*
    js v1.0 by:dum
    :src="webJsBase.js?load=a,b"
    : js
*/
var webJsBase = {
    require: function(libraryName) {
        document.write('');
    },
    load: function(defaultLoad) {
        if((typeof Prototype=='undefined')||(typeof Element == 'undefined')||(typeof Element.Methods=='undefined'))
        throw ('prototype lib !');
        if(typeof defaultLoad=='undefined')defaultLoad='';
        var js = /webJsBase.js(?.*)?$/;
        $$('head script[src]').findAll(function(s) {
            return s.src.match(js);
        }).each(function(s) {
            var path = s.src.replace(js, '');
            var includes = s.src.match(/?.*load=([a-zA-Z0-9_,]*)/);
            (includes ? includes[1] : defaultLoad).split(',').each(function(include) {
                webJsBase.require(path + include + '.js');
            });
        });
    }
};
webJsBase.load(); // js
これは な です.ロードしてから document.writeを してください.
 
  
<p></p> <p>    document.write("<script src='test.js'>");


scriptにIDを付けてからダイナミックにscriptのsrc属性を変えます.
 
  

    s1.src="test.js"


ここでgetElements ByTagName('HEAD')を って にscript を します.
 
  
<p></p> <p>    var oHead = document.getElementsByTagName('HEAD').item(0);</p> <p>    var oScript= document.createElement("script");</p> <p>    oScript.type = "text/javascript";</p> <p>    oScript.src="test.js";</p> <p>    oHead.appendChild( oScript);</p> <p>
このように試してみてもいいです.関数は自分で決めます.
 
  
function include(src) {
HTMLCode = '';
document.write(HTMLCode);
}
び し は、このようにあなたのphpのinclude に えます.
 
  
include(baseDir + "/Prototype.js");
include(baseDir + "/Map.js");
include(baseDir + "/MapEvent.js");

include(baseDir + "/model/MapModel.js");
include(baseDir + "/model/MapType.js");
include(baseDir + "/model/Tile.js");

また、ExtJs 4を って、jsを にロードできると に われました.ここでは しません. の はダイナミックにjsをロードするのに です.
したがって、このような を いてJsを にロードするとともに、メインインターフェースのJsスクリプトは に されるので、 でロードされたJsコードが される を られない があります.
この はAjaxでJsをロードする が えられます.