HTMLDocumentEvents 和 HTMLDocumentEvents2 有什么区别?
What is the different between HTMLDocumentEvents and HTMLDocumentEvents2?
mshtml 的 HTMLDocumentEvents 和 HTMLDocumentEvents2 有什么不同?
这些是不同的接口:不同的方法,尽管有些方法完全相互复制或扩展。
HTMLDocument
COM 对象能够使用多个接口传递事件,由 COM 客户端选择使用哪个接口。本来是HTMLDocumentEvents
然后需要扩展对象添加新的事件建议保持原接口不变,添加新方法的新事件接口(HTMLDocumentEvents2
,HTMLDocumentEvents3
,HTMLDocumentEvents4
).
扩展接口可以有额外的方法、参数而不会有破坏与使用旧事件接口的现有客户端的兼容性的危险,例如onhelp
、onclick
两个接口上的方法:
dispinterface HTMLDocumentEvents {
properties:
methods:
[id(0x8001000a)]
VARIANT_BOOL onhelp();
[id(0xfffffda8)]
VARIANT_BOOL onclick();
dispinterface HTMLDocumentEvents2 {
properties:
methods:
[id(0x8001000a)]
VARIANT_BOOL onhelp([in] IHTMLEventObj* pEvtObj);
[id(0xfffffda8)]
VARIANT_BOOL onclick([in] IHTMLEventObj* pEvtObj);
mshtml 的 HTMLDocumentEvents 和 HTMLDocumentEvents2 有什么不同?
这些是不同的接口:不同的方法,尽管有些方法完全相互复制或扩展。
HTMLDocument
COM 对象能够使用多个接口传递事件,由 COM 客户端选择使用哪个接口。本来是HTMLDocumentEvents
然后需要扩展对象添加新的事件建议保持原接口不变,添加新方法的新事件接口(HTMLDocumentEvents2
,HTMLDocumentEvents3
,HTMLDocumentEvents4
).
扩展接口可以有额外的方法、参数而不会有破坏与使用旧事件接口的现有客户端的兼容性的危险,例如onhelp
、onclick
两个接口上的方法:
dispinterface HTMLDocumentEvents {
properties:
methods:
[id(0x8001000a)]
VARIANT_BOOL onhelp();
[id(0xfffffda8)]
VARIANT_BOOL onclick();
dispinterface HTMLDocumentEvents2 {
properties:
methods:
[id(0x8001000a)]
VARIANT_BOOL onhelp([in] IHTMLEventObj* pEvtObj);
[id(0xfffffda8)]
VARIANT_BOOL onclick([in] IHTMLEventObj* pEvtObj);