Как вызвать функцию из динамически подгруженного JavaScript?

201
02 августа 2021, 12:10

Стоит задача подключить коммент сервер именно динамически, а потом вызвать функцию вызова из API сервера.

Как обратиться к функции динамически подгруженного скрипта?

// Подключаем CometServerApi
var loadedJSCometServerApi = document.createElement('script');
loadedJSCometServerApi.src = "https://comet-server.com/CometServerApi.js";
loadedJSCometServerApi.type = "text/javascript";
loadedJSCometServerApi.language = "javascript";
//получаем элемент секции head
var head = document.getElementsByTagName('head')[0];
 //вставляем новый script в head
head.appendChild(loadedJSCometServerApi);
var user_id = '1';
var user_key = 'c4ca4238a0b923820dcc509a6f75849b';
// Запускаем CometServer
CometServer().start({
    dev_id:2148, 
    user_id:user_id, 
    user_key:user_key
});
Answer 1

То что вы добавили тег скрипт в документ еще не значит, что можно сразу выполнять его код. Нужно дождаться пока браузер его загрузит/распарсит и только потом будут доступны глобальные переменные из этого скрипта

// Подключаем CometServerApi 
var loadedJSCometServerApi = document.createElement('script'); 
loadedJSCometServerApi.src = "https://comet-server.com/CometServerApi.js"; 
loadedJSCometServerApi.type = "text/javascript"; 
loadedJSCometServerApi.language = "javascript"; 
 
// Нужно дождаться, пока скрипт загрузится 
loadedJSCometServerApi.addEventListener('load', () => { 
  var user_id = '1'; 
  var user_key = 'c4ca4238a0b923820dcc509a6f75849b'; 
  // Запускаем CometServer 
  CometServer().start({ 
      dev_id:2148,  
      user_id:user_id,  
      user_key:user_key 
  }); 
}); 
 
 
//получаем элемент секции head 
var head = document.getElementsByTagName('head')[0]; 
 //вставляем новый script в head 
head.appendChild(loadedJSCometServerApi);

READ ALSO
Зачем нужен NPM если есть ресурс на CDN?

Зачем нужен NPM если есть ресурс на CDN?

Подскажите, зачем нужен NPM если есть ресурс на CDN? К примеру, хочу использовать какую-то библиотекуПо инструкции, могу установить через NPM, а могу...

172
Применение паттерна Модуль JS

Применение паттерна Модуль JS

Хотелось бы узнать побольше о методах применения паттерна Модуль, если можно на реальных примерахСпасибо

271
jquery, как отключить autofield в input

jquery, как отключить autofield в input

у меня есть форма, и я хочу в ней отключить автозаполнение

125