繁体   English   中英

如何从 Cefsharp EvaluateScriptAsync 获取返回值

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM