Skip to content

WebView2 控件核心功能参考

导航控制

  • 描述:导航到指定的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);
' });

基于 VB6组件 发布