【问题标题】:MSHTML: IHtmlDocument - how to subscribe to custom javascript eventsMSHTML:IHtmlDocument - 如何订阅自定义 javascript 事件
【发布时间】:2023-03-28 04:55:01
【问题描述】:

我正在用 c# 为 IE 编写扩展。 我有一个名为browserIWebBrowser2 对象,我可以从中得到一个IHtmlDocument2 对象,如下所示:

var document = browser.Document as IHTMLDocument2;

现在我需要对此代码触发的 javascript 事件做出反应:

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

我看到我可以使用clickmouseleaveHTMLDocumentEvents2 接口中的其他属性来订阅典型事件,但是我找不到像OnCustomEventHtmlEvents['MyCustomEvent'] += ... 之类的东西。

在 Firefox 插件中实现这个功能很容易,但是用 IE 就很痛苦...... 这甚至可能吗? 谢谢

【问题讨论】:

    标签: javascript c# internet-explorer mshtml


    【解决方案1】:

    您可以使用 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
    }
    

    【讨论】:

      【解决方案2】:

      看起来有几种不同的方法可以解决这个问题。

      这里有几个看起来相关的链接:

      希望这会有所帮助...

      -- 兰斯

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-01-27
        • 2011-12-27
        • 2021-08-19
        相关资源
        最近更新 更多