onload()后加载外部javascript文件

时间:2014-02-13 17:59:09

标签: javascript html onload

我在head标记中使用它:

<script src="js/lightbox.js"></script>

是否可以从标题中删除此内容并使用onload()加载此文件?

<body onload="...">...</body>

注意:这不是一个函数,它是一个带有多个函数的外部js文件。

谢谢!

5 个答案:

答案 0 :(得分:4)

<script>
function loadJS(src, callback) {
    var s = document.createElement('script');
    s.src = src;
    s.async = true;
    s.onreadystatechange = s.onload = function() {
        var state = s.readyState;
        if (!callback.done && (!state || /loaded|complete/.test(state))) {
            callback.done = true;
            callback();
        }
    };
    document.getElementsByTagName('head')[0].appendChild(s);
}
loadJS('/script/script.js', function() { 
    // put your code here to run after script is loaded
});
</script>

我仍然认为最好加载jQuery并使用$ .getScript,因为你有很多好东西。

可以在身体负荷上调用它

答案 1 :(得分:2)

onload="blabla();"

function blabla()
{
    $.getScript( 'url to your js file', function( data, textStatus, jqxhr ) {
        // do some stuff after script is loaded
    });
}

您可以在此处了解更多信息

Source

答案 2 :(得分:2)

如果你想在没有jQuery的情况下这样做,请使用此

function addScript(filename)
{
 var scriptBlock=document.createElement('script')
 scriptBlock.setAttribute("type","text/javascript")
 scriptBlock.setAttribute("src", filename)
 document.getElementsByTagName("head")[0].appendChild(scriptBlock)
}

并使用<body onload="addScript('myFile.js')"进行调用。如果要加载多个文件,可以放入一个包装器,它会添加所需的所有文件。

答案 3 :(得分:1)

使用$(document).ready() 并从此函数加载JavaScript。这听起来很疯狂,但可以做到。请关注http://www.javascriptkit.com/javatutors/loadjavascriptcss.shtml

答案 4 :(得分:0)


var JS = {
  load: function(src, callback) {
    var script = document.createElement('script'),
        loaded;
    script.setAttribute('src', src);
    if (callback) {
      script.onreadystatechange = script.onload = function() {
        if (!loaded) {
          callback();
        }
        loaded = true;
      };
    }
    document.getElementsByTagName('head')[0].appendChild(script);
  }
};

// Example with callback

JS.load("http://www.someawesomedomain.com/some.js", function() {
    //Do your thing.
});