Jak wczytywac zewnetrzne zmienne (dynamiczne tworzenie skryptow)

0

Czesc mam oto taka funkcje

//load.js
function include(destination) {
var ga = document.createElement('script');
ga.type = 'text/javascript'; ga.async = true;
ga.src = destination;
var s = document.getElementsByTagName('script')[0];
s.parentNode.insertBefore(ga, s);
}
 

Dzieki temu moge tworzyc dynamicznie skrypty, teraz chcialbym odwolywac sie do zmiennych globalnych ktore sa w tych skryptach ktore loaduje funkcje include. Przykladowo zaladuje sobie plik 'people.js' w taki sposob.

include('people.js');
 

I w tym momencie nasz plik people wklejany jest do dom. Zalozmy ze plik people wyglada tak.

//people.js
var PplService = {
 getPeople:function()
}
 

Teraz w index.html chcialbym zrobic <script> a w nim po prostu console.log(PplService) ale niestety jest undefined, jesli chodzi o load.js to do tych zmiennych moge sie odwolywac, ale z plikow ktore bede ladowal za pomoca funkcji juz nie. Jak temu zaradzic?

0

Po prostu jeżeli doklejasz coś - to to coś musi mieć czas na doklejenie, załadowanie i uruchomienie. Nie możesz od razu żądań PplService, bo po prostu nie istnieje. Ale zajrzyj w konsole i wpisz to samo chwilę po zastosowaniu Twojego include - powinno już być dostępne (var użyte w globalnym scopie zdaje się jest dostępne dla innych tagów script i nie jest tam lokalne).

0

Taki sposob dziala, jesli zrobie setTimeout rowniez, co mam wiec zrobic aby wywolac to niejako Od razu? Po prostu chcialem moj kod podzielic jakos, ale przy okazji dynamicznie ladowac te skrypty.

0

Okej, widze to, dzieki, ale mam maly problem z przyklejeniem tego, aby bylo mozna uzywac tego al'a plugin. Czyli zalozmy ze zrobie zaciagniecie do script src="plugin.js" i odwolam sie przykladowo w moim indexie

 var gallery = new Plugin() 

taka wersje moge dokonac, ale tylko w pliku plugin.js ktory zaciaga inne pliki mu potrzebne pliki za pomoca tego callbacku, ew. w index.html mozna wkleic ten callback ale takie uzycie pluginu wyglada niesmacznie. Jest jakas na to rada?

1 użytkowników online, w tym zalogowanych: 0, gości: 1