如何在 C# 中由 .NET WebBrowser 控件托管的页面中调用 JavaScript 方法并将参数传递给 JavaScript 方法? [复制]
Posted
技术标签:
【中文标题】如何在 C# 中由 .NET WebBrowser 控件托管的页面中调用 JavaScript 方法并将参数传递给 JavaScript 方法? [复制]【英文标题】:How to call and pass arguments to a JavaScript method in a page hosted by the .NET WebBrowser control in C#? [duplicate] 【发布时间】:2012-04-11 05:50:41 【问题描述】:我想通过 C# 调用 javascript 函数,使用 WinForm 的 WebBrowser 控件。我试图搜索但找不到任何可以回答我的问题的东西,只有涉及 ASP.NET 的解决方案。
提前谢谢你。
编辑:
这是我发现的唯一一个与此相关的问题,它实际上有一个答案,该答案演示了如何使用参数调用 JavaScript 方法,还显示了如何从 WebBrowser 控件中的 JavaScript 调用 .NET 函数。
我认为这个问题不应该被标记为重复,因为它增加了很好的价值。这是在谷歌搜索"c# webbrowser call javascript function with parameters"
时的第一次点击。
【问题讨论】:
【参考方案1】:这是一个很好的例子,我在这里找到了:
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());
【讨论】:
非常感谢。这个答案包括如何调用一个javascript函数向它传递参数,而你在评论中的第一个没有。你应该聪明地发布一个问题吗? 如果你想传递对象而不是字符串使用动态:social.msdn.microsoft.com/Forums/vstudio/en-US/…以上是关于如何在 C# 中由 .NET WebBrowser 控件托管的页面中调用 JavaScript 方法并将参数传递给 JavaScript 方法? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
C# .NET WebBrowser.Document GetElementById获取不到指定ID
C#中webbrowser怎么禁用默认调用的IE浏览器缩放功能
从.net(C#)中的Webbrowser控件中检索选定的文本