2017-04-13 335 views
0

我正在使用CefSharp和从HTML文件加载的HTML编辑器。我得到的JavaScript代码来获取HTML编辑器的内容:CefSharp执行javascript并获取值

var markupStr = $('#summernote').summernote('code'); 

我需要markupStr在我的C#应用​​程序返回。我目前有:

var script = "$('#summernote').summernote('code');"; 
var result = ChromiumWebBrowser.GetMainFrame().EvaluateScriptAsync(script).Result.Message; 

我可以在CefSharp执行JavaScript毫不费力,但是,我怎么找回markupStr或者其值由$('#summernote').summernote('code');设置?

+0

您需要等待任务完成才能访问结果。还有消息是错误消息,请查看FAQ中的示例 – amaitland

回答

-1

让我们假设你的脚本变量看起来像这样(或不服这样的):

var myScript = @"(function() { 
    return $('#summernote').summernote('code').val(); 
})();"; 

什么意味着返回值的类型是string

然后你做一个简单的操作

var result = await myBrowserVariable.GetMainFrame().EvaluateScriptAsync(myScript) 
.ContinueWith(t => 
{ 
    var result = t.Result; 
    return (string)result; 
}); 

现在“结果”变量包含myScript JavaScript方法执行的结果。 此外,请不要忘记添加空检查(因为t.Result可以为空),并且只有在当前帧已经加载时才调用EvaluateScriptAsync方法。