我正在尝试在C#中创建一个简单的程序,它在网站的字段中写入消息,然后发送回车。我可以使用下面的方法输入消息而没有任何问题,但发送它似乎不起作用。我找到了一种适用于Web浏览器控制台的方法,但在C#中它返回:
System.Exception: 'Exception from HRESULT: 0x80020101'
我的代码是:
public async void SendEnter() {
await currentView.InvokeScriptAsync("eval", new[] {
"var ev = document.createEvent('KeyboardEvent');" +
"ev.initKeyEvent('keydown', true, true, window, false, false, false, false, 13, 0);" +
"document.getElementById(\"box-interface-input\").dispatchEvent(ev);"
});
}
有谁知道为什么这不起作用?
PS:我没有使用submit(),因为它不是标准表单,而且在浏览器中不起作用。
答案 0 :(得分:0)
该错误消息表明javascript中存在语法错误。
虽然我不知道您正在开发的确切环境,但Dottoro entry for initKeyEvent
表示只有Firefox支持此方法,而其他浏览器则实现了initKeyboardEvent
。 MDN entry for initKeyEvent
对此进行了扩展,说明它仅适用于基于Gecko的浏览器。
MDN还表示它和initKeyboardEvent
都已弃用,不应该使用它,因为它不是跨浏览器兼容的,而是指向the KeyboardEvent
constructor作为现代的跨浏览器方式举起这类活动。
这可能不是您特定用例中的问题,我真的不知道。但是代码中的其他所有内容对我来说都很好,并且在没有任何其他错误的情况下,initKeyEvent
就是我开始寻找的地方。