如何从Cefscharp EvaluateScriptAsync获取返回值?

问题描述 投票:0回答:1

我正试图从一个名为 "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中获取返回数组,或者任何简单的例子都可以。

javascript c# cefsharp chromium-embedded
1个回答
0
投票

这里的问题是脚本的 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();
© www.soinside.com 2019 - 2024. All rights reserved.