个人觉得,之所以采用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

(更新完)