如何在由C#中的.NET WebBrowser控件托管的页面中调用JavaScript方法并将参数传递给该方法?
我想使用WinForm的WebBrowser控件通过C#调用JavaScript函数。我试图搜索,但找不到任何答案,只有涉及ASP.NET的解决方案 先谢谢你如何在由C#中的.NET WebBrowser控件托管的页面中调用JavaScript方法并将参数传递给该方法?,javascript,c#,webbrowser-control,Javascript,C#,Webbrowser Control,我想使用WinForm的WebBrowser控件通过C#调用JavaScript函数。我试图搜索,但找不到任何答案,只有涉及ASP.NET的解决方案 先谢谢你 编辑: 这是我发现的唯一一个关于这个问题的答案,它演示了如何使用参数调用JavaScript方法,还演示了如何从WebBrowser控件中的JavaScript调用.NET函数 我不认为这个问题应该被标记为重复,因为它增加了很好的价值。这是谷歌搜索“c#webbrowser call javascript function with p
编辑: 这是我发现的唯一一个关于这个问题的答案,它演示了如何使用参数调用JavaScript方法,还演示了如何从WebBrowser控件中的JavaScript调用.NET函数
我不认为这个问题应该被标记为重复,因为它增加了很好的价值。这是谷歌搜索
“c#webbrowser call javascript function with parameters”
的第一个成功例子,我在这里找到:
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>
非常感谢。此答案包括如何调用向其传递参数的javascript函数,而您在注释中的第一个函数没有。您是否应该智能地发布问题?如果您希望传递对象而不是字符串,请使用动态:
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());
}
}
}