webbrowser 里的js函数和C#的函数互相调用方式
1.c#程序里要添加 [System.Runtime.InteropServices.ComVisibleAttribute(true)] 和 webBrowser1.ObjectForScripting = this;
位置:
[System.Runtime.InteropServices.ComVisibleAttribute(true)]
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
refresh();
string path1 = System.Windows.Forms.Application.StartupPath + @"\" + "PlanMngPage" + @"\home.htm";
webBrowser1.Navigate(new Uri(path1));
webBrowser1.ObjectForScripting = this;
}
public void MyMessageBox(string message)
{
MessageBox.Show(message);
}
2.在JS使用 window.external.引用的窗体的函数(); 来引用C#里的函数
eg:
<body onload="window.external.MyMessageBox('javascript访问C#代码')">
出处:https://blog.csdn.net/gsch_12/article/details/52224454
再给出一个在C#中调用JS的方法
private void button1_Click_1(object sender, EventArgs e) { if (webBrowser1.Document.GetElementById("a") != null) { HtmlElement element = webBrowser1.Document.GetElementById("a"); element.SetAttribute("value", textBox1.Text); //textBox1.Text = element.GetAttribute("value"); } webBrowser1.Document.InvokeScript("tt", new object[] { "顶一个" }); }
html代码:
<body> <input type="text" id="a" /> <br /> <input type="button" id="btn" value="test" onclick="tt('haha')" /> <br /> <input type="button" id="btn" value="test C#" onclick="Run('--C#')" /> </body> <script> function tt(obj) { alert("hello:" + obj); } </script> <script type="text/javascript" charset="utf-8"> function Run(str) { window.external.ShowMsg(str); //alert(str); } </script>
关注我】。(●'◡'●)
如果,您希望更容易地发现我的新博客,不妨点击一下绿色通道的【因为,我的写作热情也离不开您的肯定与支持,感谢您的阅读,我是【Jack_孟】!
本文来自博客园,作者:jack_Meng,转载请注明原文链接:https://www.cnblogs.com/mq0036/p/10650809.html
【免责声明】本文来自源于网络,如涉及版权或侵权问题,请及时联系我们,我们将第一时间删除或更改!