javascript - 无法从 Javascript 获取返回值

标签 javascript c# google-chrome cefsharp

我已经成功使用 this .

但在这种情况下,我需要使用此方法从 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());
       });
   }
});

请帮我解决这个问题。

最佳答案

我认为问题在于您的 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 =>
...

关于javascript - 无法从 Javascript 获取返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43732567/

相关文章:

javascript - 如何永久更改 HTML 文件上的 DOM

c# - 带列表框的 ContentPresenter

javascript - JSON.parse ("") 因脚本错误而失败但不在 try/catch 中

javascript - 调用存储在文字符号对象中的变量

javascript - 在 MYSQL 数据库中存储包含对象的 javascript 数组?

javascript - 使用 php 和 jquery ajax 从 mysql 数据库中获取数据

c# - 后台程序中止

c# - 返回结束晚于 10 天的拍卖

javascript - Chrome 扩展程序的永久存储

javascript - 在 Chrome 中,页面不会在 Ajax 加载后调整大小