如何在html中异步添加我的javascript SDK并在准备好后调用initialize方法?

时间:2016-05-30 10:15:47

标签: javascript asynchronous google-analytics sdk

我如何在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)
}

1 个答案:

答案 0 :(得分:0)

ga 是在google js文件(www.google-analytics.com/analytics.js)中定义的

您必须在js文件中定义 mysdk