【问题标题】:EvaluateScriptAsync waiting in CefsharpEvaluateScriptAsync 在 Cefsharp 中等待
【发布时间】:2017-05-31 08:10:22
【问题描述】:

我在 Cefsharp 中使用 EvaluateScriptAsync 时遇到问题。我想用 EvaluateScriptAsync 运行一个 javascript 代码,然后在完成后我希望我的代码继续工作,但 ContinueWith 不等待 EvaluateScriptAsync 完成。这是我的代码,不知道是什么问题:

private void WebBrowserFrameLoadEnded(object sender, FrameLoadEndEventArgs e)
{
    if (e.Frame.IsMain)
    {
        var task = browser.EvaluateScriptAsync("(function() { function xx() { $('body').animate({scrollTop: $('body').prop(\"scrollHeight\")}, 8000, function() { var win = $(window); if ($(document).height() - win.height() == win.scrollTop()) { return true; } else { xx(); } }); }; xx(); })();");

        task.ContinueWith(taskHtml =>
        {
            if (taskHtml.IsCompleted)
            {
                /* Some code working */
            }
            this.DialogResult = DialogResult.OK;
        });
    }
}

【问题讨论】:

  • 你没有查看脚本是否执行成功,查看任务结果
  • @amaitland 脚本正在运行,我已经检查过了。
  • 请更新您的代码以显示您检查响应的位置。

标签: c# cefsharp


【解决方案1】:

您应该使用浏览器选项卡控件的 ExecuteSciptAsyc() 方法。

首先你必须获取当前标签页控件,然后从浏览器控件中调用 ExecuteSciptAsyc() 方法。

var control = GetCurrentTabControl(); control.Browser.ExecuteScriptAsync("alert('It's Working')");

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-08-02
    • 2017-09-13
    • 2023-03-26
    • 1970-01-01
    • 1970-01-01
    • 2020-04-02
    相关资源
    最近更新 更多