Как я асинхронно загружаю свой 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)
}
mysdk.js mysdk = {}; mysdk.init = function() { ...... } –
С вашим кодом mysdk является объектом nkt a function. Вы должны определить функцию mysdk(), которая получит два parmeters. – Ygalbel
hey @Ygalbel. Я немного смущен, как это реализовать. Пожалуйста, проверьте это [скрипт] (https://jsfiddle.net/srp5x375/2/), что я делать неправильно. –