如何在C#中使用Chrome Web浏览器获取javascript的返回值

时间:2019-02-16 15:22:49

标签: javascript c# cefsharp

如何使用Chrome浏览器获取javascript的返回值。我知道如何为DOM元素添加值。但是我不知道如何使用cef sharp获取DOM元素的值。 我的示例代码就是这样。

//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 :(得分:1)

您可能对他们在GitHub上拥有的official CefSharp FAQ感兴趣。


您需要等待FrameLoadEnd事件触发。之后,您才能评估脚本。然后使用要在框架上执行的脚本字符串调用EvaluateScriptAsync,然后返回一个Task,其中将包含操作结果。

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());
};