C#使用javascript将ENTER发送到WebView中的div

时间:2017-03-18 01:38:17

标签: javascript c# webview

我正在尝试在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(),因为它不是标准表单,而且在浏览器中不起作用。

1 个答案:

答案 0 :(得分:0)

该错误消息表明javascript中存在语法错误。

虽然我不知道您正在开发的确切环境,但Dottoro entry for initKeyEvent表示只有Firefox支持此方法,而其他浏览器则实现了initKeyboardEventMDN entry for initKeyEvent对此进行了扩展,说明它仅适用于基于Gecko的浏览器。

MDN还表示它和initKeyboardEvent都已弃用,不应该使用它,因为它不是跨浏览器兼容的,而是指向the KeyboardEvent constructor作为现代的跨浏览器方式举起这类活动。

这可能不是您特定用例中的问题,我真的不知道。但是代码中的其他所有内容对我来说都很好,并且在没有任何其他错误的情况下,initKeyEvent就是我开始寻找的地方。