Как я могу получить возвращенное значение JavaScript с помощью веб-браузера Chromium в C # - PullRequest
0 голосов
/ 16 февраля 2019

Как я могу получить возвращаемое значение JavaScript с помощью веб-браузера Chromium.Я знаю, как поместить значение в элемент DOM.Но я не знаю, как получить значение элемента DOM, используя cef sharp.Мой пример кода такой:

//chromeBrowser = ChromiumWebBrowser object
String script = 
string.Format("document.getElementsByName('DOMElementName') 
[0].value;");
chromeBrowser.EvaluateScriptAsync(script).ContinueWith(x =>
        {
           // I want to use the returned value of the script above
        });

Как мне этого добиться.

1 Ответ

0 голосов
/ 16 февраля 2019

Вас может заинтересовать официальный FAQ по CefSharp , который они имеют на своем GitHub.


Вам нужно дождаться, пока событие FrameLoadEnd не сработает.Только после этого вы можете оценить сценарий.Затем вызовите EvaluateScriptAsync со строкой сценария, которую вы хотите выполнить в кадре, затем вы получите задание, которое будет содержать результат операции.

browser.FrameLoadEnd += (sender, args) =>
{
  var task = args.frame.EvaluateScriptAsync(script, null);

  task.ContinueWith(t =>
  {
    if (!t.IsFaulted)
    {
      var response = t.Result;
      var result = = response.Success ? (response.Result ?? "null") : response.Message;
      // TODO: do something with the result
    }
  }, TaskScheduler.FromCurrentSynchronizationContext());
};
...