如何在C#中的.NET WebBrowser控件托管的页面中调用和传递参数到JavaScript方法?

时间:2012-03-27 16:42:50

标签: javascript c# webbrowser-control

我想使用WinForm的WebBrowser控件通过C#调用JavaScript函数。我试图搜索但找不到任何能回答我问题的内容,只有涉及ASP.NET的解决方案。

提前谢谢。


编辑:

这是关于这一点的唯一问题,我发现它实际上有一个答案,演示了如何使用参数调用JavaScript方法,还展示了如何在WebBrowser控件中从JavaScript调用.NET函数。

我不认为这个问题应该标记为重复,因为它增加了良好的价值。这是谷歌搜索"c# webbrowser call javascript function with parameters"时的第一次点击。

1 个答案:

答案 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());
        }
    }
}
相关问题