«Ожидается функция» в элементе управления WebBrowser - PullRequest
0 голосов
/ 05 июля 2018

У меня есть следующий HTML-код, который отображается в WebBrowser элементе управления:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
  <meta http-equiv="X-UA-Compatible" content="ie=edge" />
  <title>Welcome</title>
  <style type="text/css">
    /*<![CDATA[*/
      body {
        font: 8pt Verdana;
        background: ThreeDFace;
      }
      #appname {
        line-height: 1;
      }
      #appname h1 {
        margin: 0;
        font: bold 10pt Verdana;
      }
      #appname p {
        margin: 0;
      }
      #actions_list {
        list-style-type: none;
        padding: 0;
      }
    /*]]>*/
  </style>
  <script type="text/javascript">
    //<![CDATA[
      var ACTION_NEWPROJECT  = 0x0001;
      var ACTION_NEWFILE     = 0x0002;
      var ACTION_OPENPROJECT = 0x0003;
      var ACTION_OPENFILE    = 0x0004;
    //]]>
  </script>
</head>
<body>
  <div id="appname">
    <h1>Application</h1>
    <p>Slogan</p>
  </div>
  <div id="actions">
    <ul id="actions_list">
      <li><a href="#" onclick="window.external.ExecuteAction(ACTION_NEWPROJECT);return false">New project</a></li>
      <li><a href="#" onclick="window.external.ExecuteAction(ACTION_NEWFILE);return false">New file</a></li>
      <li><a href="#" onclick="window.external.ExecuteAction(ACTION_OPENPROJECT);return false">Open project</a></li>
      <li><a href="#" onclick="window.external.ExecuteAction(ACTION_OPENFILE);return false">Open file</a></li>
    </ul>
  </div>
  <div id="recentfiles">
    <p>Recent files:</p>
    <ul id="recentfiles_list"></ul>
  </div>
  <script type="text/javascript">
    //<![CDATA[
      window.onload = function() {
        var recentFiles = window.external.GetRecentFiles();
        var recentFilesDOMContainer = document.getElementById("recentfiles_list");
        for (var i = 0; i < recentFiles.length; i++) {
          var index = 0+i;
          var fileDOMParent = window.document.createElement("li");
          var fileDOMElement = window.document.createElement("a");
          fileDOMElement.href = "#";
          fileDOMElement.onclick = function() {
            window.external.OpenRecentFile(index);
            return false;
          };
          fileDOMElement.innerText = recentFiles[i];
          fileDOMParent.appendChild(fileDOMElement);
          recentFilesDOMContainer.appendChild(fileDOMParent);
        }
      };
    //]]>
  </script>
</body>
</html>

Для связи с приложением я использую свойство WebBrowser.ObjectForScripting, чтобы получить доступ к классу с функциями через window.external. Это также отлично работает.

Но когда я пытаюсь открыть страницу ниже, я получаю следующую ошибку:

Script Error
Line: 61
Char: 25
Error: Function expected
Code 0

Почему это происходит? Кажется, это происходит в цикле for.

1 Ответ

0 голосов
/ 05 июля 2018

Единственное, о чем я могу думать, это о том, что недавние файлы не содержат массив. Вы пытались открыть консоль разработчика и набрать недавние файлы, чтобы увидеть, что в ней содержится? :)

...