1

以下是父页面 ( index.html) 的常见 HTML 结构:

<html>
<head>
<title>test title</title>
</head>
    <frameset cols="150,*">
        <frame name="left" src="testleft.html">
        </frame>
        <frame name="right" src="testright.html">
        </frame>
  </frameset>
 </html>

以下是子页面 ( testleft.html) 的常见 HTML 结构:

<html>
    <head>
        <script>
            function proc1(frm) {
                alert("called proc1");
                frm.setAttribute("id", "change!!");
            }
        </script>
    </head>
    <body>
        <p>This is testpage.</p>
        <form name="TestFormName" action="get" id="TestFormId">
            <input type="text" value="TextValueEmpty" />
        </form>
    </body>
</html>

我想proc1()使用 C# 调用 testleft.html。我尝试使用WebBrowser.Document.InvokeScript(),但它不能调用proc1()。我怎么做?

4

1 回答 1

2

WebBrowser.Document.InvokeScript()只能用于调用 JScript 函数,但由于您的函数更深,我们必须创建一个小“函数”来访问您的函数。WebBrowser 控件没有任何方法可以做到这一点,所以我们必须使用“hack”:

我们将导航到javascript:code以执行我们的代码。为了访问我们的函数 proc1,我们必须使用这个小片段top.frames[0].proc1()

所以,总而言之,我们必须编写一行简单的 C# 代码:

WebBrowser.Navigate("Javascript:top.frames[0].proc1()");
于 2013-07-13T15:45:53.510 回答