我正试图从一个名为 "L "的数组中获取一个Base64格式的图像。CefScharp EvaluateScriptAsync
代码 :
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
. 那么我如何从scrip中获取返回数组,或者任何简单的例子都可以。
这里的问题是脚本的 EvaluateScriptAsync
其中函数被分配给 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();