2016-05-30 5 views
-1

Как я асинхронно загружаю свой sdk (JS-файл) в html и вызываю методы в нем, как только мой объект SDK будет готов на аналогичные строки, например, как работает аналитический код spetet для googles или facebook sdk, у меня есть открытый объект MYSDK, и он имеет некоторые свойства и метод, которые я бы хотел вызвать, когда скрипт загружен в html.Как асинхронно добавить мой javascript SDK в 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) 
} 

ответ

0

га определяется в Google файл (расслоение плотной www.google-analytics.com/analytics.js)

Вы должны определить mysdk внутри файла JS.

+0

mysdk.js mysdk = {}; mysdk.init = function() { ...... } –

+0

С вашим кодом mysdk является объектом nkt a function. Вы должны определить функцию mysdk(), которая получит два parmeters. – Ygalbel

+0

hey @Ygalbel. Я немного смущен, как это реализовать. Пожалуйста, проверьте это [скрипт] (https://jsfiddle.net/srp5x375/2/), что я делать неправильно. –

Смежные вопросы