Chrome 无法从Javascript获取返回值

6qfn3psc  于 2023-02-10  发布在  Go
关注(0)|答案(1)|浏览(165)

我已经成功地使用了这个。
但在这种情况下,我需要传递参数,并获得返回值在一次从javascript使用这个方法。但这段代码是行不通的:

int idx=1;
chromeBrowser.EvaluateScriptAsync(
   string.Format(@"
    var i = {0};
    return i;
", idx)
).ContinueWith(x =>
{
   var response = x.Result;

   if (response.Success && response.Result != null)
   {
       this.Invoke((MethodInvoker)delegate
       {
           int atemp = (int)response.Result;
           MessageBox.Show(atemp.ToString());
       });
   }
});

请帮我解决这个问题。

2nc8po8w

2nc8po8w1#

我认为问题在于您的JavaScript代码应该是self invoking function
尝试将函数重写为如下形式:

(function() {
  var i = 1;
  return i;
})()
console.log((function() {
  var i = 1;
  return i;
})());

从上面的代码片段中可以看到,这段代码实际上返回了一个值,你可以在C#中使用这段JavaScript,如下所示:

int idx = 1;
chromeBrowser.EvaluateScriptAsync(
    string.Format(@"
        (function() {{
          var i = {0};
          return i;
        }})()
    ", idx)
).ContinueWith(x =>
...

相关问题