У меня есть приложение winforms, в котором есть элемент управления ChromiumWebBrowser и некоторые основные элементы управления Windows. Я хочу иметь возможность щелкнуть кнопку, вызвать javascript, чтобы получить значение текстового поля в браузере, и скопировать возвращаемое значение в текстовое поле в приложении winforms. Вот мой код:Получение значений текстового поля из браузера CefSharp с помощью javascript
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;
Результат, который возвращается, однако, просто «{}». Я загрузил одну и ту же веб-страницу в Chrome и выполнил тот же javascript в инструментах dev, и я получил значение текстового поля, как ожидалось.
В демоверсии, на которой я смотрел, был пример кода, просто «return 1 + 1;», и когда я попробовал, я получил значение «2» вместо «{}». Интересно, что когда я попытался
string script = "(function() {return 'hello';})()";
Я все еще получаю «{}», как будто это не работает со строками.
Я немного почесывал голову и не мог понять, как это решить. Я делаю очень основную синтаксическую ошибку или что-то более сложное происходит?
Возможно, ваш сценарий слишком рано запускается, см. Общее руководство по использованию. – amaitland
Сценарий выполняется при нажатии кнопки, поэтому не имеет смысла, что страница не может быть загружена, если я могу ждать, пока я хочу – jardantuan