个人觉得,之所以采用Win32的COM方式来提供WebView2的API,主要时考虑到COM方式的API在Win32,.NET,WinRT中皆可方便使用。
ICoreWebView2
WebView2的核心封装是ICoreWebView2接口(从IUnkown派生出来的)。让你可以装载和操作Web Content。
ICoreWebView2包含以下事件:
-
NavigationStarting
-
SourceChanged
-
ContentLoading
-
HistoryChanged
-
NavigationCompleted
-
FrameNavigationStarting
-
FrameNavigationCompleted
-
PermissionRequested
-
ProcessFailed
-
WebMessageReceived
-
WebResourceRequested
-
NewWindowRequested
-
WindowCloseRequested
-
ScriptDialogOpening
-
ContainsFullScreenElementChanged
-
DocumentTitleChanged
包含以下只读属性:
- BrowserProcessId
- CanGoBack
- CanGoForward
- ContainsFullScreenElement
- DocumentTitle
- Settings
- Source
包含以下方法
- AddScriptToExecuteOnDocumentCreated
- RemoveScriptToExecuteOnDocumentCreated
- RemoveHostObjectFromScript
- AddWebResourceRequestedFilter
- RemoveWebResourceRequestedFilter
- CallDevToolsProtocolMethod
- CapturePreview
- ExecuteScript
- GoBack
- GoForward
- Navigate
- NavigateToString
- Reload
- Stop
- GetDevToolsProtocolEventReceiver
- OpenDevToolsWindow
- PostWebMessageAsJson
- PostWebMessageAsString
包含以下枚举类型:
- COREWEBVIEW2_CAPTURE_PREVIEW_IMAGE_FORMAT
- COREWEBVIEW2_KEY_EVENT_KIND
- COREWEBVIEW2_MOVE_FOCUS_REASON
- COREWEBVIEW2_PERMISSION_KIND
- COREWEBVIEW2_PERMISSION_STATE
- COREWEBVIEW2_PHYSICAL_KEY_STATUS
- COREWEBVIEW2_PROCESS_FAILED_KIND
- COREWEBVIEW2_SCRIPT_DIALOG_KIND
- COREWEBVIEW2_WEB_ERROR_STATUS
- COREWEBVIEW2_WEB_RESOURCE_CONTEXT
ICoreWebView2Controller
用来控制CoreWebView2对象,可以用于控制窗口以及合成。
包含事件
- AcceleratorKeyPressed
- GotFocus
- LostFocus
- MoveFocusRequested
- ZoomFactorChanged
包含读写属性
- Bounds
- IsVisible
- ParentWindow
- ZoomFactor
包含只读属性
- CoreWebView2
包含的方法
- Close
- MoveFocus
- NotifyParentWindowPositionChanged
- SetBoundsAndZoomFactor
ICoreWebView2Deferral
推迟事件的销毁,将事件保留在消息循环中。
ICoreWebView2DevToolsProtocolEventReceiver
跟DevTools相关
ICoreWebView2Environment
跟WebView2的环境(用户数据?)相关。
事件:
- NewBrowserVersionAvailable
方法:
- CreateCoreWebView2Controller
- CreateWebResourceResponse
只读属性:
- BrowserVersionString
ICoreWebView2EnvironmentOptions
创建ICoreWebView2Environment用的参数。
包含以下读写属性:
- AdditionalBrowserArguments
- AllowSingleSignOnUsingOSPrimaryAccount
- Language
- TargetCompatibleBrowserVersion
ICoreWebView2HttpHeadersCollectionIterator
用于遍历Http头。
只读属性:
- HasCurrentHeader
方法:
- GetCurrentHeader
- MoveNext
ICoreWebView2HttpRequestHeaders
代表HTTP请求头:
包含方法:
- Contains
- GetHeader
- GetHeaders
- GetIterator
- RemoveHeader
- SetHeader
ICoreWebView2HttpResponseHeaders
代表HTTP回复头
包含方法:
- AppendHeader
- Contains
- GetHeader
- GetHeaders
- GetIterator
ICoreWebView2Settings
用于开关WebView2特性。
包含读写属性:
- AreDefaultContextMenusEnabled
- AreDefaultScriptDialogsEnabled
- AreDevToolsEnabled
- AreHostObjectsAllowed
- IsBuiltInErrorPageEnabled
- IsScriptEnabled
- IsStatusBarEnabled
- IsWebMessageEnabled
- IsZoomControlEnabled
ICoreWebView2WebResourceRequest
跟WebResourceRequested事件相关的HTTP请求。
包含以下读写属性:
- Content
- Method
- Uri
包含以下只读属性:
- Headers
ICoreWebView2WebResourceResponse
跟WebResourceRequested事件相关的HTTP回复。
包含以下读写属性:
- Content
- ReasonPhrase
- StatusCode
包含以下只读属性:
- Headers
ICoreWebView2WindowFeatures
处理跟窗口相关的设置。
包含以下只读属性:
- Height
- Left
- MenuBar
- ScrollBars
- Status
- Toolbar
- Top
- Width
包含以下方法
- HasPosition
- HasSize
Globals
包含以下全局函数:
- CompareBrowserVersions
- CreateCoreWebView2Environment
- CreateCoreWebView2EnvironmentWithOptions
- GetAvailableCoreWebView2BrowserVersionString
其他参考
(本篇完)
2021-07-25更新
根据WebView2 control not loading HTML string,使用NavigateToString方法时要先确保WebView2已经初始化。初始化有两种方式:
- 设置Source辖属,会隐式初始化WebView
- 显式调用EnsureCoreWebView2Async
(更新完)