首页 > 解决方案 > WebBrowser 控件中的“预期功能”

问题描述

WebBrowser我在控件中显示了以下 HTML 代码:

<!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循环中。

标签: c#.netinternet-explorerwebbrowser-control

解决方案


我唯一能想到的是,recentFiles 里面没有数组。您是否尝试打开开发者控制台并输入recentFiles 以查看其中包含的内容?:)


推荐阅读