我正在使用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
单元,因为我真的需要它用于其他东西。