您必须将事件处理程序附加到每个感兴趣的元素。如果您对所有元素感兴趣,那么您必须遍历所有元素:
var
All: IHTMLElementCollection;
Element2: IHTMLElement2;
i: Integer;
begin
Handler:= TEventObject.Create(Self.EventHandler);
All:=(WebBrowser1.ControlInterface.Document as IHTMLDocument2).All;
for i:=0 to All.Length-1 do
begin
Element2:=All.item(i,EmptyParam) as IHTMLElement2;
Element2.AttachEvent('onmouseenter', Handler);
end;
end;
因此,在理想情况下,您将在收到DocumentComplete
感兴趣的文档后附加处理程序,然后在BeforeNavigate
.
尽管您应该注意,但可能存在几个问题:
- 文档可能永远无法完成加载(这通常是由于某些广告服务器未提供服务时包含广告的框架引起的,因此该框架会阻止主文档触发
DocumentComplete
),因此您的事件处理程序将永远不会附加
- 脚本可能会修改页面并添加元素,然后这些元素不会附加事件处理程序
- 您必须手动进入
FRAMEs
/IFRAMEs
并在那里附加处理程序
我也希望它和你的方法一样简单。这将为我们省去很多麻烦。