如何在IHTMLElement上添加多个事件OnClick?

时间:2016-08-16 08:28:36

标签: delphi interface mshtml

我正在使用MSHTML_TLB单位。

我曾经将IHTMLElement接口转换为IEventTarget,这个接口就像一个月前一样受到支持。然后,我会使用方法addEventListener添加另一个OnClick事件。

现在,它不起作用。它表示无法将IHTMLElement转换为IEventTarget,因为界面不受支持。它与一个月前使用的HTML元素相同。

我通过导入MSHTML单位一周前更改了代码,因此我使用了两个MSHTML and MSHTML_TLB单位。

因此,在更改之前,它看起来像是:

uses MSHTML_TLB;

{...}

procedure {...}
var
  MyHTMLElement: IHTMLElement;
  EventHandler: IEventTarget;
begin
  { ... some code here }
  { It uses the object IEventTarget from the unit MSHTML_TLB by default }

  if (Supports(MyHTMLElement, IEventTarget, EventHandler)) then
    EventHandler.AddEventListener(...);
end;

现在看起来像这样:

uses MSHTML, MSHTML_TLB;

{...}

procedure {...}
var
  MyHTMLElement: MSHTML_TLB.IHTMLElement;
  EventHandler: MSHTML_TLB.IEventTarget;
begin
  { ... some code here }
  { I have to specify that I use a IEventTarget from MSHTML_TLB by default because otherwise, it will take the IEventTarget from the MSHTML unit. }

  if (Supports(MyHTMLElement, MSHTML_TLB.IEventTarget, EventHandler)) then
    EventHandler.AddEventListener(...);
end;

我的代码正常工作,直到它尝试将IHTMLElement转换为IEventTarget元素并且它表示不支持该接口,因此方法"支持"这里返回false。

我认为这可能是由于导入MSHTML单位造成的,但如果是这样,为什么呢?我无法移除MSHTML单元,因为我真的需要它用于其他东西。

0 个答案:

没有答案