C#代码如下:
namespace JsCallWinform
{
/*
* JS、C#方法互相调用示例
*/
[System.Runtime.InteropServices.ComVisibleAttribute(true)]
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
webBrowser1.Navigate(Application.StartupPath + "/test.htm");
webBrowser1.ObjectForScripting = this;
}
// 供JS调用的方法
public string callForJs(string args)
{
return "from winform : " + args;
}
// C#调用JS
private object callJs(System.Windows.Forms.WebBrowser webBrowser, string tag)
{
string[] args = tag.Split('|');
if (args.Length == 1)
{
return webBrowser.Document.InvokeScript(args[0], null);
}
else
{
object[] objects = new object[args.Length - 1];
Array.Copy(args, 1, objects, 0, objects.Length);
return webBrowser.Document.InvokeScript(args[0], objects);
}
}
private void button1_Click(object sender, EventArgs e)
{
object returnvalue = callJs(webBrowser1, "callbywinform|c#");
MessageBox.Show(returnvalue.ToString());
}
}
}
JS代码如下:
<html>
<script language="javascript">
window.onload = function()
{
var returnvaluefromcs = window.external.callForJs("js");
alert(returnvaluefromcs);
}
function callbywinform(args)
{
return "from js : " + args;
}
</script>
</html>