作者: littleboy 2023-10-14 16:09:22

WebBrowser与JS交互

后台代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
using System;
using System.IO;
using System.Runtime.InteropServices;
using System.Windows.Forms;

namespace WinFormPractice
{
[ComVisible(true)]
public partial class FormBrowserJs : Form
{
public FormBrowserJs()
{
InitializeComponent();

webBrowser.Navigate(Path.Combine(Application.StartupPath, "HTMLBrowserJs.html"));
webBrowser.ObjectForScripting = this;
}

public void ShowMsgForJs(string msg)
{
TBRecv.Text += $"{msg}\r\n";
}

private void BtnSend_Click(object sender, EventArgs e)
{
webBrowser.Document.InvokeScript("ShowMsgForCSharp", new []{ TBSend.Text });
}
}
}

网页内容

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<!DOCTYPE html>

<html lang="en" xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta charset="utf-8" />
<title></title>
<script>
//alert("准备就绪");
window.external.ShowMsgForJs("准备就绪");

function ShowMsgForCSharp(str) {
var msg = "收到消息:" + str;

//1、调用C#方法;
window.external.ShowMsgForJs(msg);
//2、改变网页内容;
document.getElementById("info").innerHTML += msg + "<br/>";
//3、弹窗;
alert(msg);
}
</script>
</head>
<body>
<div>通过 WebBrowser 让 JS 与 C# 代码交互 测试页</div>
<div id="info"></div>
</body>
</html>

参考资料

Winform 通过 WebBrowser 与 JS 交互 - 独立观察员