相关疑难解决方法(0)

异步脚本加载回调

http://jsfiddle.net/JamesKyle/HQDu6/

我创建了一个基于Mathias Bynens优化的Google Analytics异步脚本的简短函数,如下所示:

function async(src) {
  var d = document, t = 'script',
      o = d.createElement(t),
      s = d.getElementsByTagName(t)[0];
  o.src = '//' + src;
  s.parentNode.insertBefore(o, s);
}
Run Code Online (Sandbox Code Playgroud)

这很好用,我已经开始将它用于几个不同的脚本

// Crazy Egg
async('dnn506yrbagrg.cloudfront.net/pages/scripts/XXXXX/XXXXX.js?' + Math.floor(new Date().getTime() / 3600000));

// User Voice
var uvOptions = {};
async('widget.uservoice.com/XXXXX.js');

// Google Analytics
var _gaq = [['_setAccount', 'UA-XXXXX-XX'], ['_setDomainName', 'coachup.com'], ['_trackPageview']];
async('google-analytics.com/ga.js');

// Stripe
async('js.stripe.com/v1');?
Run Code Online (Sandbox Code Playgroud)

当我遇到需要在加载后调用的脚本时出现问题:

// Snap Engage
async('snapabug.appspot.com/snapabug.js');
SnapABug.init('XXXXX-XXXXX-XXXXX-XXXXX-XXXXX');
Run Code Online (Sandbox Code Playgroud)

所以我想我会把它变成一个回调函数,可以这样使用:

async('snapabug.appspot.com/snapabug.js', function() {
    SnapABug.init('XXXXX-XXXXX-XXXXX-XXXXX-XXXXX');
});
Run Code Online (Sandbox Code Playgroud)

我没想到这对我来说很难做到,但结果却是这样.

我的问题是什么是添加回调的最有效方法,而不会使代码过于复杂.

请参阅jsfiddle:http: …

javascript asynchronous function callback

27
推荐指数
3
解决办法
3万
查看次数

标签 统计

asynchronous ×1

callback ×1

function ×1

javascript ×1