我正在用c#为IE写一个扩展。我有一个名为browser的IWebBrowser2对象,从中我可以获得一个如下所示的IHtmlDocument2对象:
var document = browser.Document as IHTMLDocument2;
现在我需要对这段代码触发的javascript事件做出反应:
var event = document.createEvent("HTMLEvents");
event.initEvent('MyCustomEvent', true, false);
someElement.dispatchEvent(event);我看到我可以使用HTMLDocumentEvents2接口中的click、mouseleave和其他属性来订阅典型的事件,但我找不到像OnCustomEvent或HtmlEvents['MyCustomEvent'] += ...之类的东西。
在firefox插件中实现这一功能很容易,但在IE中就很麻烦了……这有可能吗?谢谢
发布于 2015-12-31 14:06:04
您可以使用attachEvent监听事件。我在IE10中为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
}发布于 2014-11-01 03:54:50
看起来有几种不同的方法可以解决这个问题。
这里有几个看起来相关的链接:
(SO)
希望这能帮到你。
--兰斯
https://stackoverflow.com/questions/26674855
复制相似问题