在javascript包括通过bookmarklet之前运行的函数

时间:2014-11-12 23:48:24

标签: javascript jquery

好的,所以我正在写一个书签,希望最终变成一个插件,它将检查当前的URL,然后根据该URL将它们重定向到另一个页面。我遇到的问题是我的一个函数在包含新的js文件之前运行。一个例子是我加载jquery和sweet alert然后运行甜蜜警报功能:

function loadElements() {
    var addjquery = document.createElement('script');
    addjquery.src = '//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js';
    document.head.appendChild(addjquery);
    // Then add sweet alert js/css
}
function runstuff() {
    swal("Its good!!","yay","success");
}

然后我背靠背跑两个

loadElements();
runstuff();

现在发生的事情是当我运行这个书签时,我收到一条错误,指出swal is not defined。但是,当我第二次运行它时,它完全正常并且符合预期。任何想法如何延迟运行“runstuff”功能直到加载javascript?

1 个答案:

答案 0 :(得分:1)

加载脚本时需要回调,它是异步的:

addjquery.addEventListener('load', function (e) {
    alert('jQuery Loaded');
    console.log(e);
    runStuff();
}, false);

<强> Fiddle