【问题标题】:Using EvaluateScriptAsync to call javascript in CefSharp在 CefSharp 中使用 EvaluateScriptAsync 调用 javascript
【发布时间】:2015-11-04 08:15:03
【问题描述】:

目前在我的 Visual Studio 项目中使用 CefSharp 来显示 Web 浏览器。我正在使用 EvaluateScriptAsync 在我的 javascript 中调用一个函数。

但是我遇到了一个小问题。

下面的可以工作:

    string strMsg = "12345";
    var script = string.Format("testing({0});", strMsg);
    browser.EvaluateScriptAsync(script);

以下无法正常工作:

    string strMsg = "ABCDE";
    var script = string.Format("testing({0});", strMsg);
    browser.EvaluateScriptAsync(script);

然后在html端:

  testing = function (error) {
      alert(error);
      return false;
  };

为什么我不能发送字母字符串?

发送数字和发送字母有区别吗?

【问题讨论】:

  • 在浏览器的命令行中运行testing(ABCDE);,看看会发生什么。你的结论?

标签: javascript html visual-studio-2013 cefsharp


【解决方案1】:

您生成的字符串将作为 JavaScript 执行。正如您在第二个示例中所代表的那样,当代码执行时,它将寻找一个名为ABCDE 的变量。需要用引号封装成字符串。

string strMsg = "ABCDE";

应该是

string strMsg = "`ABCDE`";

string strMsg = "\"ABCDE\"";

对于调试,CefSharp 支持DevTools,您可以打开它并查看 JavaScript 控制台输出。

【讨论】:

  • 我不想硬编码 strMsg。然后,如果我使用 string.Format,我会这样写: string.Format("testing('{0}');", strMsg);对吗?
  • script 的输出是什么?
  • 确保使用单引号。如果需要,请使用其他语法。
  • 字符串有字符限制吗?我的字符串对于我的 strMsg 来说很长
  • 理论上限制应该是兆字节,我从来没有试图找到它的最大值。如果您不需要返回值,请考虑使用ExecuteScriptAsync
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-08-02
  • 1970-01-01
  • 2014-06-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多