wywołanie funkcji JS [Web Browser]

0

Witam :)
W jaki sposób "wywołać" funkcję JavaScriptu która znajduje się w obecnie załadowanej stronie?
Przykładowo mam plik test.html a w nim

<script type="TEXT/JAVASCRIPT">
function test()
{
/// Cośtam
}
</script>

i jak przez kod Delphi wywołać funkcję "test" ?

0

bycmoze jedynym sposobem jest "wypisanie" w WebBrowser kodu wywolujacego ta funkcje.

0

zapisz do pliku test.jc i normalnie uruchom w systemie tak jak zwykłu plik (aplikację)

0
na chwile napisał(a)

zapisz do pliku test.jc i normalnie uruchom w systemie tak jak zwykłu plik (aplikację)

Bez sensu. Po pierwsze, większość funkcji na www odnosi się do samej strony, po drugie, zwykle jak uruchomisz taki skrypt, host skryptów stwierdzi, że brakuje mu jakiegoś obiektu htmlowego. Ja bym spróbował dać navigate('javascript:funkcja()');, może zadziała.

0
function ExecuteScript(doc: OleVariant; script: string; language: string): Boolean;
var
  win: OleVariant;
  Olelanguage: Olevariant;
begin
if not VarIsEmpty(doc) then
 begin
  win := doc.ParentWindow;
   if not VarIsEmpty(win) then
    begin
     Olelanguage := language;
     try
      win.ExecScript(script, Olelanguage);
     except
     end;
    end;
 end;
end;

uzycie:

ExecuteScript(WebBrowser1.OleObject.Document,'alert(''a'')','JavaScript');
0

Może, aby nie posługiwać się variant'ami, proponuję dopisać:

uses MSHTML;

A kod funkcji wygląda wtedy tak (działa - sprawdziłem):

function ExecuteScript(WebBrowser:TWebBrowser; Script: string; Language: string): Boolean;
var Window: IHTMLWindow2;
begin
result:=FALSE;
if Assigned(IHTMLDocument2(WebBrowser.Document)) then
  begin
  Window := IHTMLDocument2(WebBrowser.Document).ParentWindow;
  if Assigned(Window) then
    begin
    try
      Window.ExecScript(Script, Language);
      result:=TRUE;
    except
      result:=FALSE;
      end;
    end;
  end;
end;

Jeśli kod HTML/JS wygląda tak:

<html>
  <body>
    <script type="TEXT/JAVASCRIPT">
    function test(a)
    {
      alert(a);
    }
    </script>
  </body>
</html>

To wywołanie może wyglądać tak:

Caption:=BoolToStr(ExecuteScript(WebBrowser1, 'test(''Delphi'')', 'JavaScript'));

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