私はChromiumWebBrowserコントロールといくつかの基本的なウィンドウコントロールを持つwinformsアプリケーションを持っています。私は、ボタンをクリックし、JavaScriptを呼び出してブラウザ内のテキストボックスの値を取得し、返された値をwinformsアプリケーションのテキストボックスにコピーしたいと考えています。ここに私のコードです:JavaScriptを使用してCefSharpブラウザからテキストボックス値を取得する
string script = "(function() {return document.getElementById('Email');})();";
string returnValue = "";
var task = browser.EvaluateScriptAsync(script, new { });
await task.ContinueWith(t =>
{
if (!t.IsFaulted)
{
var response = t.Result;
if (response.Success && response.Result != null)
{
returnValue = (string)response.Result;
}
}
});
txtTarget.Text = returnValue;
しかし、戻ってきた結果はちょうど "{}"です。私は同じWebページをChromeに読み込み、開発ツールで同じjavascriptを実行して、期待どおりのテキストボックス値を取得します。
私が見たデモでは、単に "return 1 + 1;"というサンプルコードがありましたが、試してみると "{}"の代わりに "2"という値が返されていました。面白いことに、私が試したとき
string script = "(function() {return 'hello';})()";
これは文字列ではうまくいきませんが、私はまだ "{}"を得ていました。
私はしばらくこの頭を掻いてきましたが、これを解決する方法を見つけ出すことができませんでした。私は非常に基本的な構文エラーをしているのですか、それとももっと複雑なことがありますか?
スクリプトを実行するのが早すぎる可能性があります。詳しくは、一般的な使用方法のガイドをご覧ください。 – amaitland
ボタンがクリックされたときにスクリプトが実行されるので、私が望むだけ待つことができれば、ページを読み込めないという意味はありません – jardantuan