【问题标题】:Cannot get return value from Javascript无法从 Javascript 获取返回值
【发布时间】:2017-05-02 07:37:34
【问题描述】:

我已经成功使用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 c# google-chrome cefsharp


    【解决方案1】:

    我认为问题在于您的 JavaScript 代码应该是 self invoking function

    尝试将函数改写成这样:

    (function() {
      var i = 1;
      return i;
    })()
    

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

    从上面的sn-p可以看出,这段代码实际上是返回一个值。您可以像这样在 C# 中使用此 JavaScript:

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

    【讨论】:

    • 对不起,我打错了,我已将“int i = 0”更改为“int idx = 0”实际上,我想在 c# 中使用变量而不是按值硬编码来传递值直接地。感谢您的回复
    • @rizkidzulkarnain 您无需对值进行硬编码即可使用自调用 JavaScript 函数。请参阅我的更新答案。
    • 我已经按照您的建议尝试了代码,但有如下错误消息:mscorlib.dll 中发生了“System.FormatException”类型的未处理异常附加信息:输入字符串不正确格式。
    • @rizkidzulkarnain 你试过调试吗?你知道是哪条线导致了错误吗?你原来的错误是什么?除非您提供更多信息,否则我无能为力。
    • 是的,我已经调试过了可能是这个链接中的图片可以给你更多的信息link
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-05-12
    • 1970-01-01
    • 1970-01-01
    • 2016-01-07
    • 1970-01-01
    • 2014-01-08
    • 1970-01-01
    相关资源
    最近更新 更多