模拟IE浏览器事件

    技术2025-09-01  15

    unit Unit1;

    interface

    uses  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,  Dialogs, StdCtrls, OleCtrls, SHDocVw, MSHTML;

    type  TForm1 = class(TForm)    WebBrowser: TWebBrowser;    Button: TButton;    procedure FormCreate(Sender: TObject);    procedure ButtonClick(Sender: TObject);  private    { Private declarations }  public    { Public declarations }  end;

    var  Form1: TForm1;

    implementation

    {$R *.dfm}

    procedure TForm1.FormCreate(Sender: TObject);begin  webbrowser.Navigate('file://C:/Documents and Settings/Administrator/桌面/index.html'); //这个是我做的简单测试网页;end;

    procedure TForm1.ButtonClick(Sender: TObject);  var    doc:ihtmldocument3; //这里用HTMLdocument也是可以的。    divs:IHTMLElementCollection;    divelemen:IHTMLElement; //我的Delphi7没有IHTMLElement3,不知道为什么,所以搞了很久啊,哎~;begin  doc:=webbrowser.document as iHTMLDocument3; //这里如果使用Ihtmldocument2是没有效果的,只会出错,下面代码也不能使用getElementById方法。  divelemen:=doc.getElementById('T1') as IHTMLElement; 

      //ShowMessage(divelemen.className);

    第一种方法:  //divelemen.click;        //只可以把onmousedown修改为onclick;

    第二种方法:  WebBrowser.OleObject.document.all.item('T2',0).fireEvent('onmousedown');  //就是这个了,呵呵,fireEvent这个就是关键;

    第三种方法:可以说是我原创的,呵呵,网上还没有见到过。或者是我太自大了。献丑~

      OleVariant(divelemen).FireEvent('onmousedown'); //D7没有IhtmlElement3提示情况下,这样写代码简洁很多。功能一样;end;

    end.

     

    第一种方法不可取,试过你就知道 -_-! .

    第二种方法最有效,关键在IHTMLElement3.FireEvent,但是,我的Delphi7没有IHTMLElement3的提示,所以用了其它代码代替了。

     

    以下是我制作的测试网页代码,文本文件保存格式为index.html

     

    <html><body><div id="T2" class=QMEditorBtnA οnmοusedοwn="javascript:alert('dsfsdf')" οnmοuseοver="this.style.textDecoration='underline'" title=编辑HTML源码 style="PADDING-LEFT: 0px" οnmοuseοut="this.style.textDecoration='none'" unselectable="on">&lt;HTML&gt;</div>

    <a id="T1" class="3333333" οnclick="javascript:alert('abcdefg')" href="#">123</a></body><html>

    最新回复(0)