如何在delphi中执行javascript?

rad*_*ick 7 javascript browser delphi

我正在编写一个小应用程序,在中间我打了一些点我必须执行javascript来获取我的数据?

在我的过程中,我必须登录到一些网址,然后转到某个页面,必须从中获取数据.我用indy idhttp做了所有这些,除了一个需要javascript才能获得价值的专栏以外我得到了所有信息,然后我尝试使用twebbowser让它适合我,但我怎样才能使用cookies启用webbrowser?

我导航了browserto(' http://mysite.com/login.php用户并通过'),好了它的插入然后我试图访问下一个链接(' http://mysite.com/link1/example.php ')但它指向登录页面:(

任何帮助赞赏:)

Leo*_*Leo 7

你现在的问题是什么?在标题中,您将询问如何执行JavaScript.请尝试以下方法:

uses
  MSHTML_TLB, SHDocVw, ShellAPI;

function ExecuteScript(doc: IHTMLDocument2; script: string; language: string): Boolean;
var
  win: IHTMLWindow2;
  Olelanguage: Olevariant;
begin
  if doc <> nil then
  begin
    try
      win := doc.parentWindow;
      if win <> nil then
      begin
        try
          Olelanguage := language;
          win.ExecScript(script, Olelanguage);
        finally
          win := nil;
        end;
      end;
    finally
      doc := nil;
    end;
  end;
end;
Run Code Online (Sandbox Code Playgroud)

样品用法:

IDoc: IHTMLDocument2;
Webbrowser1.Document.QueryInterface(IHTMLDocument2, iDoc);
ExecuteScript(iDoc, 'document.login.submit()', 'JavaScript'); 
Run Code Online (Sandbox Code Playgroud)

(这个,以及更多,可以在这里找到).


然后在文中你问如何使用cookie(当使用TWebBrowser时,这应该自动发生).当使用Indy HTTP时,您只需将a附加TIdCookieManager到您的TIdHTTPClient实例,就是所有(但由于脚本要求,您可能不想再使用它).


ska*_*adt 2

最好的选择是让 IE 本身自动化。获取一份embeddedwb的副本,放在表单上并导航到您需要执行某些操作的URL。组件有一个返回 OLEVariant 的文档属性,用它来执行 DHTML 样式语句.. 之类的东西document.form.submit;

您可以轻松隐藏用于自动化的窗口,我使用的一种技术是将其放置在页面控件的新页面上,添加第二个页面来显示状态,然后显示状态页面并隐藏选项卡。