2017-03-18 10 views
0

私は、Webサイトのフィールドにメッセージを書き込んでからEnterを送信するC#で単純なプログラムを作成しようとしています。以下の方法で問題なくメッセージを入力できますが、送信すると動作しないようです。私は、Webブラウザのコンソールで動作する方法を発見したが、C#ではそれが返されます。C#JavaScriptを使用してWebViewでdivを入力する

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

すぐに間違ったコードは表示されませんが、WebViewをデバッグしようとしましたか(https://msdn.microsoft.com/en-us/library/dn715902.aspxを参照)。内部の実際のエラーは何ですか? – SergGr

答えて

0

このエラーメッセージは、javascriptで構文エラーが発生していることを示しています。

開発中の正確な環境がわかりませんが、Dottoro entry for initKeyEventはFirefoxだけがこの方法をサポートしていますが、他のブラウザはinitKeyboardEventを実装しています。 MDN entry for initKeyEventはこれを少し拡張して、Geckoベースのブラウザでのみ有効です。

MDNにも、initKeyboardEventの両方が推奨されなくなりました。このタイプのイベントを発生させる近代的なクロスブラウザの方法として、代わりにthe KeyboardEvent constructorと指しています。

これは、特定のユースケースでは問題ではないかもしれませんが、私は本当にわかりません。しかし、あなたのコードの他のものはすべて私にとってうまく見えます。他のエラーがなければ、initKeyEventは私が探し始める場所です。

関連する問題