You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在CefSharp中获取JavaScript的字符串输出?

问题排查与解决方案

你的代码存在几个问题,导致无法正确获取并显示JavaScript执行结果:

1. 错误的String.Format用法

你当前的String.Format("output", response)不会把response的值插入到字符串中,应该使用占位符{0}来指定输出位置:

MessageBox.Show(String.Format("output: {0}", response));

2. 未正确处理JavaScriptResponse对象

EvaluateScriptAsync返回的task.Result是JavaScriptResponse类型,它包含Success(执行是否成功)和Result(执行结果)两个核心属性。你需要先判断执行是否成功,再获取结果:

var task = chromiumWebBrowser1.EvaluateScriptAsync("2+2");
var response = task.Result;
if (response.Success)
{
    MessageBox.Show(String.Format("output: {0}", response.Result));
}
else
{
    MessageBox.Show("脚本执行失败: " + response.Message);
}

3. 确保脚本在页面加载完成后执行

如果在页面尚未加载完成时调用EvaluateScriptAsync,会导致脚本无法正常执行,返回空结果。你应该在FrameLoadEnd事件中执行脚本,确保页面DOM已就绪:

// 先注册FrameLoadEnd事件
chromiumWebBrowser1.FrameLoadEnd += ChromiumWebBrowser1_FrameLoadEnd;

// 事件处理方法
private void ChromiumWebBrowser1_FrameLoadEnd(object sender, FrameLoadEndEventArgs e)
{
    // 确保是主框架加载完成
    if (e.Frame.IsMain)
    {
        var task = e.Frame.EvaluateScriptAsync("2+2");
        var response = task.Result;
        if (response.Success)
        {
            MessageBox.Show(String.Format("output: {0}", response.Result));
        }
        else
        {
            MessageBox.Show("脚本执行失败: " + response.Message);
        }
    }
}

按照以上步骤修改后,就能正确获取2+2的执行结果4并显示出来。

内容的提问来源于stack exchange,提问作者user20360581

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 20:35:19