调用在子<;帧>;
本文关键字:gt lt 调用 | 更新日期: 2023-09-27 18:22:16
以下是父页面(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>
我想使用C#在testleft.html上调用proc1()
。我尝试使用WebBrowser.Document.InvokeScript()
,但它无法调用proc1()
。我该怎么做?
WebBrowser.Document.InvokeScript()
只能用于调用JScript函数,但由于您的函数更深,我们必须创建一个小的"函数"来访问您的函数。WebBrowser控件没有任何方法可以做到这一点,所以我们必须使用"破解":
我们将导航到javascript:code
以执行我们的代码。为了达到我们的函数proc1,我们必须使用这个小片段:top.frames[0].proc1()
。
因此,为了把所有这些放在一起,我们必须编写一行简单的C#代码:
WebBrowser.Navigate("Javascript:top.frames[0].proc1()");