javascript - 如何在delphi中执行javascript?

标签 javascript delphi browser

我正在编写一个小应用程序,中间突然发现我必须执行 javascript 才能获取我的数据?

在我的过程中,我必须登录到某个 url,然后转到某个页面并从中获取数据。我用 indy idhttp 完成了所有这些,我得到了所有信息,除了一列需要 javascript 来获取值,然后我尝试使用 twebbowser 让它为我工作,但是我如何使用 cookies 来启用 webbrowser?

我将浏览器导航到('http://mysite.com/login.php 用户并通过'),然后登录,然后我尝试访问下一个链接('http://mysite.com/link1/example.php')但它指向登录页面:(

感谢任何帮助:)

最佳答案

你现在的问题是什么?在标题中,您询问如何执行 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 实例,仅此而已(但您可能不想使用它,因为脚本要求....)

关于javascript - 如何在delphi中执行javascript?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2530394/

相关文章:

html - 如何删除选择框上的箭头 (Firefox)

javascript - 使用新值更新数据对象

javascript - React-router:URL参数存在于this.props中的两个不同位置?

delphi - delphi组件顺序和图层选项

windows - 如何在 Windows XP 上显示 Windows 照片打印向导?

javascript - 如何检测jquery中文档大小的变化

javascript - 禁用浏览器控制台

javascript - 使用 SVG 的圆环图

delphi - IndyTCP delphi对象数组交换

java - 内联网应用程序的签名小程序