【问题标题】:JavaScript with WebBrowser control C#带有 WebBrowser 控件的 JavaScript C#
【发布时间】:2015-04-18 03:44:19
【问题描述】:

最近我遇到了 C# 中的 Web 浏览器控件的问题。

导航到其中实现了 JavaScript 的网页会导致 WebBrowser 崩溃 - 它声称该网页中的 JS 代码存在语法错误。 (它提供了行和错误是什么字符,所以我去看看是什么导致了错误)。

错误示例:

  function validate_fen(fen) {
    var errors = {
       0: 'No errors.',
       1: 'FEN string must contain six space-delimited fields.',
       2: '6th field (move number) must be a positive integer.',
       3: '5th field (half move counter) must be a non-negative integer.',
       4: '4th field (en-passant square) is invalid.',
       5: '3rd field (castling availability) is invalid.',
       6: '2nd field (side to move) is invalid.',
       7: '1st field (piece positions) does not contain 8 \'/\'-delimited rows.',
       8: '1st field (piece positions) is invalid [consecutive numbers].',
       9: '1st field (piece positions) is invalid [invalid piece].',
      10: '1st field (piece positions) is invalid [row too large].',
    };

错误所在的行是 3977 char number 5 或更具体地说,此代码中 char 5 中的最后一行(这意味着它可能是最后一个逗号,如果我错了,请纠正我)。

更具体的错误代码:

  10: '1st field (piece positions) is invalid [row too large].',
};

鉴于其他浏览器确实可以正确加载网站,包括 IE(我知道 webBrowser 和 IE 并不相同)我将如何解决这些问题?

我的想法是:

  1. 在运行时修复脚本(如果可能)
  2. 无论如何都要加载脚本。

我不确定,但我认为 webBrowser 控件不会加载脚本,如果出现错误会导致稍后出现更多错误。

我将如何成功加载特定网页? 是否可以在运行时编辑脚本(脚本不在 HTML 的头部,它在服务器上)?如果可能的话,怎么做?

【问题讨论】:

    标签: javascript c# html


    【解决方案1】:

    如何在 C# 中加载和修复脚本:
    从网站复制非加载脚本并修复语法错误并将其复制到您的代码中。

    重要提示:将所有脚本代码放在一个函数中,这样您就可以 以后再说吧

    使用以下代码将脚本添加到站点:

    HtmlElement head = webBrowser1.Document.GetElementsByTagName("head")[0];
    HtmlElement scriptEl = webBrowser1.Document.CreateElement("script");
    IHTMLScriptElement element = (IHTMLScriptElement)scriptEl.DomElement;
    element.text = script;//script is your script which you defined
    head.AppendChild(scriptEl);
    

    调用 InvokeScript 到您创建的函数。

    如果你修正了所有的语法错误应该没问题。

    【讨论】:

      猜你喜欢
      • 2011-04-07
      • 1970-01-01
      • 1970-01-01
      • 2012-02-15
      • 2015-12-19
      • 1970-01-01
      • 2012-08-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多