pas2js/packages/rtl/Rtl.ScriptLoader.pas
2019-04-12 20:38:40 +00:00

56 lines
1.1 KiB
ObjectPascal

unit Rtl.ScriptLoader;
interface
uses types;
Type
TloadedCallBack = Reference to procedure(Data : TObject);
TProc = reference to procedure;
Procedure loadScripts(scripts : TStringDynArray; callback : TLoadedCallback; Data : TObject);
implementation
uses js, web;
Procedure loadScripts(scripts : TStringDynArray; callback : TLoadedCallback; Data : TObject);
Procedure loader (src : String; handler : TProc);
var
head,script : TJSElement;
Procedure DoLoaded;
begin
script.Properties['onload']:=Nil;
script.Properties['onreadystatechange']:=Nil;
Handler;
end;
begin
script:= document.createElement('script');
script['src'] := src;
script.Properties['onload'] := @DoLoaded;
script.Properties['onreadystatechange']:=@DoLoaded;
head:=TJSElement(document.getElementsByTagName('head')[0]);
if Head=Nil then
Head:=Document.body;
head.appendChild( script );
end;
Procedure run;
begin
if Length(Scripts)<>0 then
loader(String(TJSArray(scripts).shift()), @run)
else if Assigned(callback) then
callback(data);
end;
begin
Run;
end;
end.