簡體   English   中英

MSHTML:IHtmlDocument-如何訂閱自定義JavaScript事件

[英]MSHTML: IHtmlDocument - how to subscribe to custom javascript events

我正在用c#編寫IE擴展。 我有一個名為IHtmlDocument2 browserIWebBrowser2對象,從中可以得到一個這樣的IHtmlDocument2對象:

var document = browser.Document as IHTMLDocument2;

現在,我需要對此代碼觸發的javascript事件做出反應:

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

我看到我可以使用HTMLDocumentEvents2界面中的clickmouseleave和其他屬性來訂閱典型事件,但是找不到OnCustomEventHtmlEvents['MyCustomEvent'] += ...等東西。

在firefox附加組件中實現此功能很容易,但是使用IE卻很痛苦……甚至可能嗎? 謝謝

您可以使用attachEvent來監聽事件。 我已經測試了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
}

看來您可以通過幾種不同的方法來解決問題。

這里有一些看起來很相關的鏈接:

希望這可以幫助...

-蘭斯

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM