GeckoDocument.CreateEvent 抛出异常

GeckoDocument.CreateEvent throws an exception

我的 C# 应用程序中有一个 GeckoFX 29 GeckoWebBrowser。 我成功导航到一个网页,但我有一个不接受简单 "click()" 的元素,因此我必须强制分派事件。 问题是,当我尝试创建事件时,GeckoFX 核心抛出异常。

var eventName = "mouseover";
var domEvent = browser.DomDocument.CreateEvent(eventName);
domEvent.DomEvent.InitEvent(new nsAString(eventName), true, true);

在CreateEvent(eventName)处抛出异常,异常是这样的:

System.Runtime.InteropServices.COMException (0x80530009): Exception from HRESULT : 0x80530009
   at Gecko.nsIDOMDocument.CreateEvent(nsAStringBase eventType)
   at Gecko.nsString.GenericPass[T,TString](Func`2 func, String value) in c:\Users\micro_000\Documents\Visual Studio 2008\Projects\geckofx-29.0\Geckofx-Core\nsString.cs:line 221
   at Gecko.nsString.Pass[T](Func`2 func, String value) in c:\Users\micro_000\Documents\Visual Studio 2008\Projects\geckofx-29.0\Geckofx-Core\nsString.cs:line 476
   at Gecko.GeckoDomDocument.CreateEvent(String name) in c:\Users\micro_000\Documents\Visual Studio 2008\Projects\geckofx-29.0\Geckofx-Core\DOM\GeckoDomDocument.cs:line 155
   at MyApp.Window.createEvent(GeckoDocument doc, String eventName)

我试图查看源代码,但 nsIDOMDocument 只是一个接口,没有我能找到的关于此问题的其他信息。

事实证明,CreateEvent 只接受几个字符串。 因为它不起作用,所以我试图通过调用要插入文档的 java 脚本来分派事件。研究我注意到 CreateEvent 与参数 "Events" 一起使用,然后您将使用实际事件名称初始化事件。

到目前为止,我发现与 CreateEvent 一起使用的参数是 "Events"、"MouseEvent"、"KeyboardEvent"。

此代码有效:

var eventName = "mouseover";
var domEvent = browser.DomDocument.CreateEvent("MouseEvent");
domEvent.DomEvent.InitEvent(new nsAString(eventName), true, true);