首页 > 解决方案 > 如何在 c# 中使用 chromium 网络浏览器获取 javascript 的返回值

问题描述

如何使用铬 Web 浏览器获取 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
        });

我怎样才能做到这一点。

标签: javascriptc#cefsharp

解决方案


你可能对他们在 GitHub 上的官方 CefSharp FAQ感兴趣。


您需要等待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());
};

推荐阅读