我想使用WinForm的WebBrowser控件通过C#调用JavaScript函数。我试图搜索但找不到任何能回答我问题的内容,只有涉及ASP.NET的解决方案。
提前谢谢。
这是关于这一点的唯一问题,我发现它实际上有一个答案,演示了如何使用参数调用JavaScript方法,还展示了如何在WebBrowser控件中从JavaScript调用.NET函数。
我不认为这个问题应该标记为重复,因为它增加了良好的价值。这是谷歌搜索"c# webbrowser call javascript function with parameters"
时的第一次点击。
答案 0 :(得分:6)
这是一个很好的例子,我在这里找到了:
http://www.codeproject.com/Tips/127356/Calling-JavaScript-function-from-WinForms-and-vice
HTML / JavaScript的
<html>
<head>
<script type="text/javascript">
function ShowMessage(message) {
alert(message);
}
function ShowWinFormsMessage() {
var msg = document.getElementById('txtMessage').value;
return window.external.ShowMessage(msg);
}
</script>
</head>
<body>
<input type="text" id="txtMessage" />
<input type="button" value="Show Message" onclick="ShowWinFormsMessage()" />
</body>
</html>
C#
public partial class frmMain : Form {
public frmMain() {
InitializeComponent();
webBrowser1.ObjectForScripting = new ScriptManager(this);
}
private void btnShowMessage_Click(object sender, EventArgs e) {
object[] o = new object[1];
o[0]=txtMessage.Text;
object result = this.webBrowser1.Document.InvokeScript("ShowMessage", o);
}
private void frmMain_Load(object sender, EventArgs e) {
this.webBrowser1.Navigate(@"E:\Projects\2010\WebBrowserJavaScriptExample\WebBrowserJavaScriptExample\TestPage.htm");
}
[ComVisible(true)]
public class ScriptManager {
frmMain _form;
public ScriptManager(frmMain form) {
_form = form;
}
public void ShowMessage(object obj) {
MessageBox.Show(obj.ToString());
}
}
}