2014-10-31 3 views
0

Я пишу расширение для IE в C#. У меня IWebBrowser2 объекта под названием browser и от него я могу получить IHtmlDocument2 объект вроде этого:MSHTML: IHtmlDocument - как подписаться на пользовательские события javascript

var document = browser.Document as IHTMLDocument2;

Теперь мне нужно реагировать на яваскрипте события, которое обжигало этот код:

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

Я вижу, что я могу использовать click, mouseleave и другие свойства от HTMLDocumentEvents2 интерфейса, чтобы подписаться на типичные события, но я не могу найти что-то вроде OnCustomEvent или HtmlEvents['MyCustomEvent'] += ... и т. Д.

Было легко реализовать эту функциональность в дополнении Firefox, но с IE это боль ... Возможно ли это? Thanks

ответ

0

Вы можете использовать attachEvent для прослушивания th e событие. Я тестировал аналогичную работу кода для события onmessage (не имеет конкретного обработчика событий) в IE 10.

[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 
} 
Смежные вопросы