![](/img/trans.png)
[英]How to return a value with EvaluateScriptAsync() only once the DOM is loaded
[英]How to get return value from a Cefsharp EvaluateScriptAsync
我正在尝试从CefSharp EvaluateScriptAsync
获取 Base64 中的图像数组
代码:
JavascriptResponse response = await browser.EvaluateScriptAsync(@"
function foo(){
var img = document.getElementsByTagName('IMG');
var finalArray = {};
for ( var i=0; i < img.length; i++ )
{
if (img[i].hasAttribute('indexvalue')){
var c = document.createElement('canvas');
var ctx = c.getContext('2d');
ctx.drawImage(img[i], 10, 10);
finalArray.push(c.toDataURL());
$('canvas').remove();
}
}
return finalArray;
}
var res = foo();
");
这个response.Result
给了我CefSharp.JavascriptResponse.Result.get returned null
。 那么如何从脚本中获取返回数组,或者任何简单的示例都可以。
这里的问题是EvaluateScriptAsync
的脚本,其中 function 被分配给var res = foo();
而应该是foo();
只要
更新代码
JavascriptResponse response = await browser.EvaluateScriptAsync(@"
function foo(){
var img = document.getElementsByTagName('IMG');
var finalArray = [];
for ( var i=0; i < img.length; i++ )
{
if (img[i].hasAttribute('indexvalue')){
var c = document.createElement('canvas');
var ctx = c.getContext('2d');
ctx.drawImage(img[i], 10, 10);
var dataURL = c.toDataURL('image/png');
finalArray.push(dataURL.replace(/^data:image\/(png|jpg);base64,/, ''));
$('canvas').remove();
}
}
return finalArray;
}
foo();
");
//converting your response.Result into string array
string[] arr = ((IEnumerable)response.Result).Cast<object>()
.Select(c => c.ToString())
.ToArray();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.