2014-10-31 54 views
0

我正在为C#编写IE扩展。 我有叫browser一个IWebBrowser2对象,并从中我可以得到一个IHtmlDocument2对象是这样的:MSHTML:IHtmlDocument - 如何订阅自定义JavaScript事件

var document = browser.Document as IHTMLDocument2;

现在我需要在其上这段代码发射的JavaScript事件作出反应:

var event = document.createEvent("HTMLEvents"); 
event.initEvent('MyCustomEvent', true, false); 
someElement.dispatchEvent(event); 

我看到,我可以使用clickmouseleave和其他性质从HTMLDocumentEvents2接口订阅典型的事件,但我无法找到像OnCustomEventHtmlEvents['MyCustomEvent'] += ...

它很容易在Firefox附加组件中实现此功能,但与IE浏览器,这是一个痛... 这甚至可能吗? 谢谢

回答

0

你可以使用attachEvent来听e事件。我在IE 10中测试了onmessage事件(没有特定事件处理程序)的类似代码工作。

[ComVisible(true)] 
[ClassInterface(ClassInterfaceType.AutoDispatch)] 
public class EventListener 
{ 
    [DispId(0)] 
    public void handler(IHTMLEventObj evt) 
    { 
     MessageBox.Show("message received"); 
    } 
} 

void AddEventListener() 
{ 
    var evtListener = new EventListener(); 
    var window = ((IHTMLDocument2)browser.Document).parentWindow as IHTMLWindow3; 
    window.attachEvent("MyCustomEvent", evtListener); //or try onMyCustomEvent 
}