Home  >  Q&A  >  body text

javascript - jquery append一个js文件,如何在载入完成执行回调?

$('body').append('<script src="xxx.js"></script><script src="yyy.js"></script>');
这样子载入一个js,有没有办法在载入完成时执行一个回调函数。

伊谢尔伦伊谢尔伦2749 days ago619

reply all(3)I'll reply

  • ringa_lee

    ringa_lee2017-04-10 14:33:09

    试了这样

        $('body').on('load', function(){
            alert('xx');
        }).append('<script src="xxx.js"></script><script src="yyy.js"></script>');
    

    不行。。。

    这样子可以。。。

    var $jsArr = $('<script src="xxx.js"></script><script src="yyy.js"></script>');
    var loaded = 0;
    $jsArr.each(function() {
        $.getScript(this.src, function(){
            if (++loaded===$jsArr.length) {
                alert('xxx');
            }
        });
    });
    

    不知道 有没有更好的方法

    reply
    0
  • 巴扎黑

    巴扎黑2017-04-10 14:33:09

    为什么不$.getScript

    $.getScript("/do.js",function(){
        console.log("加载完毕");
    })
    

    加点料...
    jQuery.getScript(url,success(response,status))
    载入的脚本在全局环境中执行,因此能够引用其他变量,并使用 jQuery 函数。
    该函数是简写的 Ajax 函数,等价于:

    $.ajax({
      url: url,
      dataType: "script",
      success: success
    });
    

    reply
    0
  • PHP中文网

    PHP中文网2017-04-10 14:33:09

    function loadScript(url, callback) {
        var script = document.createElement("script");
        script.type = "text/javascript";
        // IE
        if (script.readyState) {
            script.onreadystatechange = function () {
                if (script.readyState == "loaded" || script.readyState == "complete") {
                    script.onreadystatechange = null;
                    callback();
                }
            };
        } else { // others
            script.onload = function () {
                callback();
            };
        }
        script.src = url;
        document.body.appendChild(script);
    }
    

    使用:

    loadScript("http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.7.2.min.js", function () {
        alert('loaded');
    });
    

    JSFiddle例子:
    http://jsfiddle.net/starandtina/L3QaM/

    reply
    0
  • Cancelreply