12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 |
- 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.
|