HI END


一种永不妥协,追求极致与完美的精神与态度。
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

在WebBrowser中通过JS调用C#方法(转)

Posted on 2013-01-13 21:56  HI END  阅读(570)  评论(0编辑  收藏  举报

来源:http://www.lwolf.cn/blog/article/code/WebBrowser-js-call-csharp.htm

在Winform程序中,通过WebBrowser控件可以让Javascript 和 C#进行交互。要让JS调用C#方法,需要在类上设置ComVisible,然后还要设置WebBrowser的ObjectForScripting属性。
      JS中调用只需使用:window.external.方法名

      具体代码如下:

using System.Runtime.InteropServices;
using System.Windows.Forms;

namespace Lwolf
{
    public partial class Form1 : Form
    {
        //此类必须对 COM 可见,才能从Javascript中调用。
        [ComVisible(true)]
        public class ScriptManager
        {
            public ScriptManager()
            {
            }

            //此方法可在JS中调用
            public void CallFromJS(string message)
            {
                MessageBox.Show(message);
            }
        }

        public Form1()
        {
            InitializeComponent();

            webBrowser1.ObjectForScripting = new ScriptManager();

            webBrowser1.DocumentText = @"<html>
                <head>
                    <title>Test</title>
                </head>
                <body>
                <input type=""button"" value=""点击"" onclick=""window.external.CallFromJS('TEST');"" />
                </body>
                </html>";
        }
    }
}