如何在delphi中执行javascript?

时间:2010-03-27 18:20:00

标签: javascript delphi browser

我正在编写一个小应用程序,在中间我发现某些地方,我必须执行javascript来获取我的数据?

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

我浏览了browserto('http://mysite.com/login.php用户并通过了'),好了它,然后我尝试访问下一个链接,如('http://mysite.com/link1/example.php'),但它指向登录页面:(< / p>

任何帮助表示赞赏:)

2 个答案:

答案 0 :(得分: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;

样本用法:

IDoc: IHTMLDocument2;
Webbrowser1.Document.QueryInterface(IHTMLDocument2, iDoc);
ExecuteScript(iDoc, 'document.login.submit()', 'JavaScript'); 

(这可以找到更多here)。


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

答案 1 :(得分:2)

您最好的选择是自动化IE本身。抓取embeddedwb的副本,放在表单上,​​然后导航到您需要执行某些操作的网址。组件的document属性返回一个OLEVariant,使用它来执行DHTML样式语句..类似document.form.submit;

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