mirror of
https://gitlab.com/freepascal.org/fpc/pas2js.git
synced 2025-04-26 22:33:41 +02:00
56 lines
1.1 KiB
ObjectPascal
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.
|