wywołanie funkcji JS [Web Browser]

wywołanie funkcji JS [Web Browser]
  • Rejestracja: dni
  • Ostatnio: dni
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

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

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

migajek
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 370
0

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

  • Rejestracja: dni
  • Ostatnio: dni
0

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

TH
  • Rejestracja: dni
  • Ostatnio: dni
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.

migajek
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 370
0
Kopiuj
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:

Kopiuj
ExecuteScript(WebBrowser1.OleObject.Document,'alert(''a'')','JavaScript');
SZ
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 3356
0

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

Kopiuj
uses MSHTML;

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

Kopiuj
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:

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

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

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

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.