WebView2 控件核心功能参考
导航控制
Navigate 方法
- 描述:导航到指定的URL
- 语法:
Navigate(ByVal Url As String)
- 示例:
vb
' 导航到指定网址
WebView21.Navigate "https://www.example.com"
' 导航到本地HTML文件
WebView21.Navigate "file:///C:/web/index.html"
LoadHtml 方法
- 描述:加载HTML字符串内容
- 语法:
LoadHtml(ByVal htmlContent As String)
- 示例:
vb
' 加载简单的HTML内容
WebView21.LoadHtml "<html><body><h1>Hello World</h1></body></html>"
' 加载带样式的HTML内容
Dim html As String
html = "<html>" & _
"<head><style>body {font-family: Arial; color: blue;}</style></head>" & _
"<body><h1>标题</h1><p>这是一段文本</p></body>" & _
"</html>"
WebView21.LoadHtml html
GoBack / GoForward 方法
- 描述:在浏览历史中向后/向前导航
- 相关属性:
CanGoBack As Boolean
- 是否可以后退CanGoForward As Boolean
- 是否可以前进
- 示例:
vb
Private Sub cmdBack_Click()
If WebView21.CanGoBack Then
WebView21.GoBack
End If
End Sub
Private Sub cmdForward_Click()
If WebView21.CanGoForward Then
WebView21.GoForward
End If
End Sub
Reload 方法
- 描述:重新加载当前页面
- 示例:
vb
' 刷新当前页面
WebView21.Reload
' 示例:创建刷新按钮
Private Sub cmdRefresh_Click()
WebView21.Reload
End Sub
页面信息
DocumentURL 属性
- 描述:获取当前文档的URL
- 返回值:String
- 示例:
vb
' 获取并显示当前URL
Private Sub ShowCurrentUrl()
Debug.Print "当前页面URL: " & WebView21.DocumentURL
End Sub
DocumentTitle 属性
- 描述:获取当前文档的标题
- 返回值:String
- 示例:
vb
' 更新窗口标题为当前页面标题
Private Sub UpdateWindowTitle()
Me.Caption = WebView21.DocumentTitle & " - My Browser"
End Sub
JavaScript 交互
ExecuteScript 方法
- 描述:执行JavaScript代码,不等待结果
- 语法:
ExecuteScript(ByVal jsCode As String)
- 示例:
vb
' 执行简单的JavaScript代码
WebView21.ExecuteScript "alert('Hello from VB!')"
' 修改页面内容
WebView21.ExecuteScript "document.body.style.backgroundColor = 'lightblue';"
' 调用页面中的函数
WebView21.ExecuteScript "updateContent('新内容');"
JsRun 方法
- 描述:执行JavaScript函数并等待返回结果
- 语法:
JsRun(ByVal FuncName As String, ParamArray args() As Variant) As Variant
- 示例:
vb
' 调用不带参数的函数
Dim result As Variant
result = WebView21.JsRun("getCurrentTime")
' 调用带参数的函数
Dim sum As Variant
sum = WebView21.JsRun("add", 5, 3) ' 调用 add(5, 3)
' 获取页面元素内容
Dim content As String
content = WebView21.JsRun("getElementContent", "myDiv")
JsRunAsync 方法
- 描述:异步执行JavaScript函数
- 语法:
JsRunAsync(ByVal FuncName As String, ParamArray args() As Variant) As LongLong
- 示例:
vb
' 异步调用函数
Dim token As LongLong
token = WebView21.JsRunAsync("longRunningOperation", "param1")
' 在JsAsyncResult事件中处理结果
Private Sub WebView21_JsAsyncResult(ByVal Result As Variant, _
Token As LongLong, ErrString As String)
If Token = savedToken Then ' savedToken 是之前保存的token值
If ErrString = "" Then
Debug.Print "异步操作结果:" & Result
Else
Debug.Print "错误:" & ErrString
End If
End If
End Sub
AddObject / RemoveObject 方法
- 描述:将COM对象暴露给JavaScript / 移除已暴露的对象
- 语法:
AddObject(ByVal ObjName As String, ByRef Object As Object, ByVal UseDeferredInvoke As Boolean = False)
RemoveObject(ByVal ObjName As String)
- 示例:
vb
' 创建要暴露给JavaScript的类
Private Type TCalcHelper
End Type
Private Sub Class_Initialize()
' 初始化代码
End Sub
Public Function Add(ByVal a As Long, ByVal b As Long) As Long
Add = a + b
End Function
' 在WebView2控件中暴露对象
Dim calc As New CalcHelper
WebView21.AddObject "calculator", calc, False
' JavaScript端使用示例:
' let result = chrome.webview.hostObjects.calculator.Add(5, 3);
' console.log('计算结果:', result);
' 移除对象
WebView21.RemoveObject "calculator"
PostWebMessage 方法
- 描述:向JavaScript发送消息
- 语法:
PostWebMessage(Message As Variant)
- 示例:
vb
' 发送字符串消息
WebView21.PostWebMessage "Hello from VB"
' 发送复杂数据
Dim data As String
data = "{""type"": ""update"", ""value"": 42}"
WebView21.PostWebMessageJSON data
' JavaScript端接收消息:
' window.chrome.webview.addEventListener('message', function(event) {
' console.log('收到消息:', event.data);
' });