我如何在html中异步加载我的sdk(JS文件)并在我的SDK对象准备就绪之后调用其中的方法,如googles解析代码spinet或facebook sdk,我有一个公共对象MYSDK和它有一些属性和方法,我想在html中加载脚本时调用。
现在我正在做这样的事情
(function (url,callback){
var s = document.createElement('script');
s.type = 'text/javascript';
s.async = true;
s.src = 'http://localhost:8181/init.js';
var x = document.getElementsByTagName('script')[0];
x.parentNode.insertBefore(s, x);
s.onload=function(){
mysdk.init({'userid':'37241d4f-fbd1-48ef-91fd-b359d20c7e31'});
};
})();
我想实现类似的东西。
(function (i, s, o, g, r, a, m) {
i['GoogleAnalyticsObject'] = r;
i[r] = i[r] || function () {
(i[r].q = i[r].q || []).push(arguments)
}, i[r].l = 1 * new Date();
a = s.createElement(o),
m = s.getElementsByTagName(o)[0];
a.async = 1;
a.src = g;
m.parentNode.insertBefore(a, m)
})(window, document, 'script', '//www.google-analytics.com
analytics.js', 'ga');
ga('create', 'UA-xxxxxxxx-x', 'xxxxxx.com');
ga('send', 'pageview');
我尝试了什么。
(function(i, s, o, g, r, a, m){
i['my_sdkObjectName'] = r;
i[r] = i[r] || function(){
(i[r].q = i[r].q || []).push(arguments)
},
i[r].l =1 * new Date();
a = s.createElement(o),
m = s.getElementsByTagName(o)[0];
a.async = 1;
a.src = g;
m.parentNode.insertBefore(a, m)
})(window, document, 'script', 'http://localhost:8181/myt-sdk.js', 'my_sdk');
my_sdk('init', '{"userid":"abcd-1234"}');
我得到了什么? my_sdk不是函数。
console.log my_sdk给出
(){
(i[r].q = i[r].q || []).push(arguments)
}