WebView 类
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
提供在应用中托管 HTML 内容的控件。
public ref class WebView sealed : FrameworkElement
/// [Windows.Foundation.Metadata.Activatable(Windows.UI.Xaml.Controls.IWebViewFactory4, 65536, Windows.Foundation.UniversalApiContract)]
/// [Windows.Foundation.Metadata.Activatable(65536, Windows.Foundation.UniversalApiContract)]
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.UniversalApiContract, 65536)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
/// [Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
class WebView final : FrameworkElement
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.UniversalApiContract, 65536)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
/// [Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
/// [Windows.Foundation.Metadata.Activatable(Windows.UI.Xaml.Controls.IWebViewFactory4, 65536, "Windows.Foundation.UniversalApiContract")]
/// [Windows.Foundation.Metadata.Activatable(65536, "Windows.Foundation.UniversalApiContract")]
class WebView final : FrameworkElement
[Windows.Foundation.Metadata.Activatable(typeof(Windows.UI.Xaml.Controls.IWebViewFactory4), 65536, typeof(Windows.Foundation.UniversalApiContract))]
[Windows.Foundation.Metadata.Activatable(65536, typeof(Windows.Foundation.UniversalApiContract))]
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.UniversalApiContract), 65536)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
[Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
public sealed class WebView : FrameworkElement
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.UniversalApiContract), 65536)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
[Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
[Windows.Foundation.Metadata.Activatable(typeof(Windows.UI.Xaml.Controls.IWebViewFactory4), 65536, "Windows.Foundation.UniversalApiContract")]
[Windows.Foundation.Metadata.Activatable(65536, "Windows.Foundation.UniversalApiContract")]
public sealed class WebView : FrameworkElement
Public NotInheritable Class WebView
Inherits FrameworkElement
<WebView .../>
- 继承
- 属性
Windows 要求
设备系列 |
Windows 10 (在 10.0.10240.0 中引入)
|
API contract |
Windows.Foundation.UniversalApiContract (在 v1.0 中引入)
|
示例
下面的代码示例演示如何将 WebView 导航到名为 Address
的 TextBox 中包含的 URI。
try
{
Uri targetUri = new Uri(Address.Text);
webViewA.Navigate(targetUri);
}
catch (FormatException ex)
{
// Bad address.
}
下面的代码示例演示如何将本地 HTML 加载到 WebView 控件中。
webViewB.NavigateToString(
"<html><body><h2>This is an HTML fragment</h2></body></html>");
注解
使用 WebView 控件在应用中托管 Web 内容。 适用于 Surface Hub 或 Xbox 的应用必须使用此 WebView。
重要
对于桌面应用,建议使用 WebView2 控件,该控件作为 Windows UI 库 2 for UWP (WinUI 2) 的一部分提供。 WebView2 使用 Microsoft Edge (Chromium) 作为呈现引擎在应用中显示 Web 内容。 有关详细信息,请参阅 Microsoft Edge WebView2 简介、 WinUI 2 中的 WebView2 入门 (UWP) 应用和 WinUI API 参考中的 WebView2 。
重要
XAML 岛:XAML 岛应用不支持此控件。 有关替代方法,请参阅 XAML 岛 - Web 视图控件。
WebView 不是 控件 子类,因此没有控件模板。 可以设置各种属性来控制 WebView 的某些可视方面。 显示区域受 Width 和 Height 属性的约束。 若要平移、缩放、倾斜和旋转 WebView,请使用 RenderTransform 属性。 若要控制 WebView 的不透明度,请设置 Opacity 属性。 若要在 HTML 内容不指定颜色的情况下指定一种用作 Web 页面背景的颜色,请设置 DefaultBackgroundColor 属性。
可以使用 DocumentTitle 属性获取当前显示在 WebView 中的 HTML 文档的标题。
尽管 WebView 不是 Control 子类,但它将接收键盘输入焦点并参与选项卡序列。 它提供 Focus 方法,以及 GotFocus 和 LostFocus 事件,但它不具有 Tab 键相关属性。 它在 Tab 键序列中的位置与在 XAML 文档顺序中的位置相同。 选项卡序列包括 WebView 内容中可接收输入焦点的所有元素。
如事件表中所示,WebView 不支持从 UIElement 继承的大多数用户输入事件,例如 KeyDown、 KeyUp 和 PointerPressed。 一种常见的解决方法是将 InvokeScriptAsync 与 JavaScript eval 函数配合使用,以使用 HTML 事件处理程序,并使用 HTML 事件处理程序中的 window.external.notify 通过 WebView.ScriptNotify 通知应用程序。
在为Windows 10编译的应用中,WebView 使用 Microsoft Edge 呈现引擎来显示 HTML 内容。 在为 Windows 8 或 Windows 8.1 编译的应用中,WebView 在文档模式下使用 Internet Explorer 11。 它不支持任何 Microsoft ActiveX 控件或插件,如 Microsoft Silverlight 或可移植文档格式 (PDF) 文件。
导航到内容
WebView 为基本导航提供了多个 API: GoBack、 GoForward、 Stop、 Refresh、 CanGoBack 和 CanGoForward。 这些 API 可用于向你的应用添加典型的 Web 浏览功能。
若要设置 WebView 的初始内容,请在 XAML 中设置 Source 属性。 XAML 分析程序会自动将字符串转换为 URI。
<!-- Source file is on the web. -->
<WebView x:Name="webViewA" Source="http://www.contoso.com"/>
<!-- Source file is in local storage. -->
<WebView x:Name="webViewB" Source="ms-appdata:///local/intro/welcome.html"/>
<!-- Source file is in the app package. -->
<WebView x:Name="webViewC" Source="ms-appx-web:///help/about.html"/>
Source 属性可以在代码中设置,但通常使用 Navigate 方法之一在代码中加载内容,而不是这样做。
若要加载 Web 内容,请将 Navigate 方法与使用 http 或 https 方案的 URI 配合使用。
webViewA.Navigate(new Uri("http://www.contoso.com"));
若要导航到具有 POST 请求和 HTTP 标头的统一资源标识符 (URI) ,请使用 NavigateWithHttpRequestMessage 方法。 此方法仅支持针对 HttpRequestMessage.Method 属性值的 HttpMethod.Post 和 HttpMethod.Get。
若要加载应用的 LocalFolder 或 TemporaryFolder 数据存储中的未压缩和未加密内容,请将 Navigate 方法与使用 ms-appdata scheme 的 Uri 结合使用。 此方案的 WebView 支持要求将内容放在本地文件夹或临时文件夹下的子文件夹中。 这样就可以导航到统一资源标识符 (URI) ,例如 ms-appdata:///local/ folder/文件.html和 ms-appdata:///temp/ folder/文件.html。 (若要加载压缩或加密文件,请参阅 NavigateToLocalStreamUri。)
其中的每个第一级别的子文件夹独立于其他第一级别子文件夹中的内容。 例如,可以导航到 ms-appdata:///temp/folder1/file.html,但在此文件中不能链接到 ms-appdata:///temp/folder2/file.html。 但是,你仍然可以使用 ms-appx-web 方案链接到应用包中的 HTML 内容,并使用 http 和 https 统一资源标识符 (URI) 方案链接到 Web 内容。
webViewA.Navigate(new Uri("ms-appdata:///local/intro/welcome.html"));
若要加载来自应用程序包中内容,请将 Navigate 方法与使用 ms-appx-web scheme 的 Uri 结合使用。
webViewA.Navigate(new Uri("ms-appx-web:///help/about.html"));
使用 NavigateToLocalStreamUri 方法,通过自定义解析程序加载本地内容。 这样既可以支持高级方案(如下载和缓存基于 Web 的内容供脱机使用),也可以支持从压缩文件中提取内容。
响应导航事件
WebView 提供了多个事件,可用于响应导航和内容加载状态。 对于根 WebView 内容,这些事件按以下顺序发生:
- NavigationStarting - 在 WebView 导航到新内容之前发生。 通过将 WebViewNavigationStartingEventArgs.Cancel 属性设置为 true,可以取消此事件的处理程序中的导航。
webViewA.NavigationStarting += webViewA_NavigationStarting;
private void webViewA_NavigationStarting(object sender, WebViewNavigationStartingEventArgs args)
{
// Cancel navigation if URL is not allowed. (Implemetation of IsAllowedUri not shown.)
if (!IsAllowedUri(args.Uri))
args.Cancel = true;
}
- ContentLoading - 在 WebView 开始加载新内容时发生。
webViewA.ContentLoading += webViewA_ContentLoading;
private void webViewA_ContentLoading(WebView sender, WebViewContentLoadingEventArgs args)
{
// Show status.
if (args.Uri != null)
{
statusTextBlock.Text = "Loading content for " + args.Uri.ToString();
}
}
- DOMContentLoaded - 在 WebView 完成分析当前 HTML 内容时发生。
webViewA.DOMContentLoaded += webViewA_DOMContentLoaded;
private void webViewA_DOMContentLoaded(WebView sender, WebViewDOMContentLoadedEventArgs args)
{
// Show status.
if (args.Uri != null)
{
statusTextBlock.Text = "Content for " + args.Uri.ToString() + " has finished loading";
}
}
- NavigationCompleted - 在 WebView 完成加载当前内容或导航失败时发生。 若要确定导航是否已失败,请检查 WebViewNavigationCompletedEventArgs 类的 IsSuccess 和 WebErrorStatus 属性。
webViewA.NavigationCompleted += webViewA_NavigationCompleted;
private void webViewA_NavigationCompleted(WebView sender, WebViewNavigationCompletedEventArgs args)
{
if (args.IsSuccess == true)
{
statusTextBlock.Text = "Navigation to " + args.Uri.ToString() + " completed successfully.";
}
else
{
statusTextBlock.Text = "Navigation to: " + args.Uri.ToString() +
" failed with error " + args.WebErrorStatus.ToString();
}
}
对于 WebView 内容中的每个 iframe ,类似事件按相同的顺序发生:
- FrameNavigationStarting - 在 WebView 中的框架导航到新内容之前发生。
- FrameContentLoading - 当 WebView 中的帧开始加载新内容时发生。
- FrameDOMContentLoaded - 当 WebView 中的帧已完成分析其当前 HTML 内容时发生。
- FrameNavigationCompleted - 当 WebView 中的帧完成加载其内容时发生。
响应潜在问题
可以响应内容的潜在问题,例如长时间运行的脚本、WebView 无法加载的内容以及不安全内容的警告。
脚本运行期间,你的应用可能不做任何响应。 当 WebView 执行 JavaScript 时,LongRunningScriptDetected 事件会定期发生,并提供中断脚本的机会。 若要确定脚本已运行的时间,请检查 WebViewLongRunningScriptDetectedEventArgs 的 ExecutionTime 属性。 若要停止该脚本,请将事件参数 StopPageScriptExecution 属性设置为 true。 除非在后续 WebView 导航期间重新加载已停止的脚本,否则该脚本不会再次执行。
WebView 控件不能承载任意文件类型。 尝试加载 WebView 无法承载的内容时,将发生 UnviewableContentIdentified 事件。 你可以处理此事件并通知用户,或者使用 Launcher 类将该文件重定向到外部浏览器或其他应用。
同样,在 Web 内容(如 fbconnect:// 或 mailto://)中调用不支持的统一资源标识符 (URI) 方案时,会发生 UnsupportedUriSchemeIdentified 事件。 可以处理此事件以提供自定义行为,而不是允许默认系统启动器启动统一资源标识符 (URI) 。
当 WebView 显示 SmartScreen 筛选器报告为不安全的内容的警告页面时,将发生 UnsafeContentWarningDisplaying 事件。 如果用户选择继续导航,随后导航到该页面将不显示警告,也不会触发该事件。
处理 WebView 内容的特殊情况
你可以使用 ContainsFullScreenElement 属性和 ContainsFullScreenElementChanged 事件来检测、响应和支持 Web 内容中的全屏体验,例如全屏视频播放。 例如,可以使用 ContainsFullScreenElementChanged 事件调整 WebView 的大小,以占用整个应用视图,或者,如以下示例所示,在需要全屏 Web 体验时,将窗口化应用置于全屏模式。
// Assume webView is defined in XAML
webView.ContainsFullScreenElementChanged += webView_ContainsFullScreenElementChanged;
private void webView_ContainsFullScreenElementChanged(WebView sender, object args)
{
var applicationView = ApplicationView.GetForCurrentView();
if (sender.ContainsFullScreenElement)
{
applicationView.TryEnterFullScreenMode();
}
else if (applicationView.IsFullScreenMode)
{
applicationView.ExitFullScreenMode();
}
}
你可以使用 NewWindowRequested 事件来处理托管 web 内容请求显示新窗口的情况,例如弹出窗口。 你可以使用另一个 WebView 控件来显示请求窗口的内容。
PermissionRequested 事件用于启用需要特殊功能的 Web 功能。 当前这些功能包括:地理位置、IndexedDB 存储以及用户音频和视频(例如,来自麦克风或摄像头)。 如果你的应用访问用户位置或用户媒体,仍需要在应用清单中声明此功能。 例如,使用地理位置的应用在 Package.appxmanifest 中至少需要声明以下功能:
<Capabilities>
<Capability Name="internetClient"/>
<DeviceCapability Name="location"/>
</Capabilities>
除了由应用处理 PermissionRequested 事件,用户还需要批准请求位置或媒体功能的应用的标准系统对话框,以便启用这些功能。
下面是应用如何在必应地图中支持地理位置的示例:
// Assume webView is defined in XAML
webView.PermissionRequested += webView_PermissionRequested;
private void webView_PermissionRequested(WebView sender, WebViewPermissionRequestedEventArgs args)
{
if (args.PermissionRequest.PermissionType == WebViewPermissionType.Geolocation &&
args.PermissionRequest.Uri.Host == "www.bing.com")
{
args.PermissionRequest.Allow();
}
}
如果你的应用需要用户输入或其他异步操作来响应权限请求,则使用 WebViewPermissionRequest 的 Defer 方法创建一个可以稍后执行的 WebViewDeferredPermissionRequest。 请参阅 WebViewPermissionRequest.Defer。
如果用户必须安全地注销 WebView 中托管的网站,或者在安全性很重要的其他情况下,请调用静态方法 ClearTemporaryWebDataAsync 以从 WebView 会话中清除所有本地缓存的内容。 这可以防止恶意用户访问敏感数据。
与 WebView 内容交互
可以使用 InvokeScriptAsync 方法调用或将脚本注入 WebView 内容,并使用 ScriptNotify 事件从 WebView 内容中获取信息,从而与 WebView 的内容进行交互。
若要在 WebView 内容中调用 JavaScript,请使用 InvokeScriptAsync 方法。 调用的脚本只可以返回字符串值。
例如,如果名为 webViewA
的 WebView 的内容包含一个名为 setDate
的函数,该函数采用 3 个参数,则可以如下所示调用它。
string[] args = {"January", "1", "2000"};
string returnValue = await webViewA.InvokeScriptAsync("setDate", args);
你可以将 InvokeScriptAsync 与 JavaScript eval 函数结合使用,以便将内容注入到 Web 页面。
在这里,XAML TextBox (nameTextBox.Text
) 的文本将写入托管在 中的 HTML 页面中的 webViewA
div。
private async void Button_Click(object sender, RoutedEventArgs e)
{
string functionString = String.Format("document.getElementById('nameDiv').innerText = 'Hello, {0}';", nameTextBox.Text);
await webViewA.InvokeScriptAsync("eval", new string[] { functionString });
}
WebView 内容中的脚本可以使用带有字符串参数 的 window.external.notify 将信息发送回应用。 若要接收这些消息,请处理 ScriptNotify 事件。
若要使外部网页在调用 window.external.notify 时触发 ScriptNotify 事件,必须在应用清单的 ApplicationContentUriRules 节中包含该页面的统一资源标识符 (URI) 。 (可以在 Microsoft Visual Studio 中的 Package.appxmanifest designer.“内容 URI”选项卡上执行此操作。) 此列表中的 URI 必须使用 HTTPS,并且可能包含子域通配符 (例如 https://.microsoft.com) ,但它们不能包含域通配符 (,例如 https://.com 和 https://。) 。 该部件清单要求不适用于源自应用包的内容、使用 ms-local-stream:// URI 的内容或使用 NavigateToString 加载的内容。
访问 WebView 中的Windows 运行时
从 Windows 10 开始,可以使用 AddWebAllowedObject 方法将本机类的实例从 Windows 运行时 组件注入到 WebView 的 JavaScript 上下文中。 这允许在该 WebView 的 JavaScript 内容中完全访问该对象的本机方法、属性和事件。 必须使用 AllowForWeb 属性修饰该类。
例如,此代码将从 Windows 运行时 组件导入的 实例MyClass
注入到 WebView 中。
private void webView_NavigationStarting(WebView sender, WebViewNavigationStartingEventArgs args)
{
if (args.Uri.Host == "www.contoso.com")
{
webView.AddWebAllowedObject("nativeObject", new MyClass());
}
}
有关详细信息,请参阅 WebView.AddWebAllowedObject。
此外,可以允许 WebView 中受信任的 JavaScript 内容直接访问 Windows 运行时API。 这为 WebView 中托管的 Web 应用提供了强大的本机功能。 若要启用此功能,必须将受信任内容的统一资源标识符 (URI) 添加到 Package.appxmanifest 中应用的 ApplicationContentUriRules 中的允许列表中,WindowsRuntimeAccess 专门设置为“all”。
此示例显示应用清单的一部分。 在这里,向本地统一资源标识符 (URI) 授予对Windows 运行时的访问权限。
<Applications>
<Application Id="App"
...
<uap:ApplicationContentUriRules>
<uap:Rule Match="ms-appx-web:///Web/App.html" WindowsRuntimeAccess="all" Type="include"/>
</uap:ApplicationContentUriRules>
</Application>
</Applications>
用于 Web 内容托管的选项
从 Windows 10 开始,可以使用 WebViewSettings) 类型的 WebView.Settings 属性 (来控制是否启用 JavaScript 和 IndexedDB。 例如,如果使用 WebView 显示严格静态内容,则可能需要禁用 JavaScript 以获取最佳性能。
捕获 WebView 内容
若要启用与其他应用共享 WebView 内容,请使用 CaptureSelectedContentToDataPackageAsync 方法,该方法将所选内容作为 DataPackage 返回。 此方法是异步的,因此必须使用延迟来阻止 DataRequested 事件处理程序在异步调用完成之前返回。
若要获取 WebView 当前内容的预览图像,请使用 CapturePreviewToStreamAsync 方法。 此方法会创建当前内容的图像,并将其写入指定的流。
执行模式
默认情况下,WebView 内容托管在桌面设备系列中设备上的 UI 线程上,而托管在所有其他设备上的 UI 线程之外。 你可以使用 WebView.DefaultExecutionMode 静态属性来查询当前客户端的默认线程行为。 如有必要,可以使用 WebView(WebViewExecutionMode) 构造函数替代此行为。
支持的 WebViewExecutionMode 值为:
- SameThread - WebView 内容托管在 UI 线程上。
- SeparateThread - WebView 内容托管在 UI 线程外的单独线程上。
- SeparateProcess - (Windows 10版本 1803 或更高版本) WebView 内容托管在应用进程外的单独进程中。 应用的所有 WebView 实例共享相同的单独进程,每个 WebView 实例没有单独的进程。
在单独的进程中运行时,WebView 存在两种行为差异:
- WebView 进程可能会终止。 可以通过侦听 SeparateProcessLost 事件来通知你。
- WebView 进程可以异步拒绝键盘焦点。 在这种情况下,WebView.Focus 方法返回 true,然后立即 (但异步) ,焦点从 WebView 移开。 (其他移动焦点的方式类似,例如 FocusManager.TryMoveFocus.) 可以使用 FocusManager.TryFocusAsync 或 FocusManager.TryMoveFocusAsync API 更显式地跟踪这一点。
此示例演示如何创建一个 WebView 控件,该控件在主机应用的单独进程中运行,并在单独的进程丢失时重新创建。
<Grid>
<Border x:Name="WebViewBorder" Loaded="WebViewBorder_Loaded" />
</Grid>
...
public sealed partial class MainPage : Page
{
public MainPage()
{
this.InitializeComponent();
var webView = new WebView(WebViewExecutionMode.SeparateProcess);
WebViewBorder.Child = webView;;
InitializeWebView(webView);
}
void InitializeWebView(WebView webView)
{
webView.Source = this.WebViewSourceUri;
webView.SeparateProcessLost += (sender, e) =>
{
var newWebView = new WebView(WebViewExecutionMode.SeparateProcess);
InitializeWebView(newWebView);
WebViewBorder.Child = newWebView;
};
}
}
注意
在移动设备上托管 UI 线程上的内容时可能存在性能问题,因此,更改 DefaultExecutionMode 时,请务必在所有目标设备上进行测试。
托管 UI 线程外内容的 WebView 与父控件不兼容,父控件需要手势从 WebView 控件向上传播到父控件,例如 FlipView、 ScrollViewer 和其他相关控件。 这些控件将无法接收在线程外 WebView 中启动的手势。 此外,并不直接支持打印线程外的 Web 内容,应改为使用 WebViewBrush 填充打印元素。
单独进程中 WebView 的焦点行为
无论是在应用进程中运行,还是在单独的进程中运行,都可以通过调用 WebView.Focus 方法在 WebView 上设置焦点。 这等效于 Control.Focus 和 Hyperlink.Focus 方法 (注意 WebView 不派生自 Control) 。
同样, FocusManager 类上的几种方法可能会影响 WebView (或 Control 或 Hyperlink) : TryMoveFocus、 FindNextFocusableElement、 FindLastFocusableElement 和 GetFocusedElement。 例如,TryMoveFocus 将焦点移动到 WebView,GetFocusedElement 返回具有焦点的 WebView。
最后,将焦点移入或移出 WebView 会引发焦点事件,同时在 WebView 本身以及失去或接收焦点的元素上。 事件为 LosingFocus、 LostFocus、 GettingFocus 和 GotFocus。 例如,当焦点从控件移动到 WebView 时,控件将引发 LosingFocus 和 LostFocus 事件,WebView 将引发 GettingFocus 和 GotFocus 事件。
当 WebView 在单独的进程中运行时,这些 API 的行为会略有变化。 假设 WebView 可聚焦,WebView.Focus 方法将返回 true (成功) ,但焦点尚未实际移动。 如果调用 FocusManager.TryMoveFocus 而不是 WebView.Focus 方法,并且它将 WebView 标识为下一个可聚焦元素,则也是如此。
行为的差异如下:
- FocusManager.GetFocusedElement 不会返回 WebView,除非异步操作完成。
- 失去焦点的控件将同步接收其 LosingFocus 事件;但是,除非异步操作完成,否则它不会接收 LostFocus。
- 同样,GettingFocus 事件将在 WebView 上同步发生;但是,除非异步操作完成,否则不会引发 GotFocus 事件。
如果改为调用 FocusManager.TryFocusAsync,则不会更改这些更改。 但是,异步方法使你有机会确定焦点更改是否成功。
在单独的进程中,对 WebView 以外的元素调用 FocusManager.TryMoveFocusAsync 将以同步方式完成。
此示例演示如何将焦点移动到下一个逻辑元素,但如果该操作失败,请将焦点还原到其初始位置。
async void MoveFocus(WebView webView))
{
FocusMovementResult result;
result = await FocusManager.TryFocusAsync(webView, FocusState.Programmatic);
if (!result.Succeeded)
{
// Reset focus to the starting position
this.Focus(FocusState.Programmatic);
}
}
警报的使用
如果 WebView 中托管的网页使用 JavaScript Alert 函数,则不会显示它。 这是针对所有版本的 WebView 设计的。
你可能能够截获 警报 显示的信息,并在主机应用程序中执行所需的操作。 这是否可能取决于页面的编写方式以及你是否控制它。 提供了一个示例,演示了执行此操作的一种可能技术。 此示例针对 Windows 8.1 和 Windows Phone 8.1 编写,但也适用于使用 通用 Windows 平台 (UWP) 的应用。 但是,这可能不适用于每个方案。
如何在通用 Windows 应用中的 WebView 中截获 JavaScript 警报示例
早期版本的说明
Windows 8.1
Windows 8.1中弃用了以下 WebView API:
- LoadCompleted 和 NavigationFailed。 请改用 NavigationCompleted 。
- InvokeScript。 请改用 InvokeScriptAsync 。
- DataTransferPackage 和 DataTransferPackageProperty。 请改用 CaptureSelectedContentToDataPackageAsync 。
- AllowedScriptNotifyUris、 AnyScriptNotifyUri 和 AllowedScriptNotifyUrisProperty。 改为将页面的 URI 包含在应用清单的 ApplicationContentUriRules 部分中。
只能在 Windows 上处理 UnsafeContentWarningDisplaying 事件。 当 WebView 显示 SmartScreen 筛选器报告为不安全的内容的警告页面时,会发生此事件。 如果用户选择继续导航,随后导航到该页面将不显示警告,也不会触发该事件。 对于Windows Phone,不实现此事件。
通过调用 InvokeScriptAsync 方法在 WebView 中调用 JavaScript 时,不支持需要辅助窗口(如 Alert)的函数。
Windows Phone 8
- Windows Phone 8.1 上的 WebView 与需要手势从 WebView 控件向上传播到父控件的父控件不兼容,例如 FlipView、ScrollViewer 类和其他相关控件。
- Windows Phone 8.1 上的 WebView 包括 ContainsFullScreenElement 属性和 ContainsFullScreenElementChanged 事件。 这些成员在 Windows 上不可用。
在Windows 10之前,不会为Windows Phone实现 UnsafeContentWarningDisplaying 事件。
Windows 8
这些备注仅适用于为 Windows 8 编译的应用,即使在 Windows 8.1 或更高版本上运行也是如此。
在 Windows 8 中,WebView 具有一个特征,即其他 UI 区域(如控件)无法在 WebView 上呈现。 这种“空域问题”是由于窗口区域在内部的处理方式,特别是如何处理输入事件以及屏幕绘制方式。 如果要呈现 HTML 内容并将其他 UI 元素置于该 HTML 内容之上,则应使用 WebViewBrush 作为呈现区域。 WebView 仍提供 HTML 源信息,可以通过 SourceName 属性引用该 WebView。 WebViewBrush 没有此覆盖限制。
如果要显示仅偶尔包含重叠内容的交互式 WebView ((例如下拉列表或应用栏) ),可以在必要时暂时隐藏 WebView 控件,将其替换为使用 WebViewBrush 填充的元素。 然后,当重叠内容不再存在时,可以再次显示原始 WebView。
注意
“空域问题”从Windows 8.1开始已修复,不适用于面向Windows 8.1或Windows 10的应用。
WebView 始终在文档模式下使用 Internet Explorer 10。
版本历史记录
Windows 版本 | SDK 版本 | 增值 |
---|---|---|
1607 | 14393 | XYFocusDown |
1607 | 14393 | XYFocusLeft |
1607 | 14393 | XYFocusRight |
1607 | 14393 | XYFocusUp |
1803 | 17134 | SeparateProcessLost |
1809 | 17763 | WebResourceRequested |
构造函数
WebView() |
初始化 WebView 类的新实例。 |
WebView(WebViewExecutionMode) |
使用指定的执行模式初始化 WebView 类的新实例。 |
属性
AccessKey |
获取或设置此元素的访问键 (助记) 。 (继承自 UIElement) |
AccessKeyScopeOwner |
获取或设置一个源元素,该元素提供此元素的访问键范围,即使它不在源元素的可视化树中也是如此。 (继承自 UIElement) |
ActualHeight |
获取 FrameworkElement 的呈现高度。 请参阅“备注”。 (继承自 FrameworkElement) |
ActualOffset |
获取此 UIElement 相对于其父级的位置,该位置在布局过程的排列过程期间计算。 (继承自 UIElement) |
ActualSize |
获取此 UIElement 在布局过程的排列过程中计算的大小。 (继承自 UIElement) |
ActualTheme |
获取元素当前使用的 UI 主题,该主题可能与 RequestedTheme 不同。 (继承自 FrameworkElement) |
ActualWidth |
获取 FrameworkElement 的呈现宽度。 请参阅“备注”。 (继承自 FrameworkElement) |
AllowDrop |
获取或设置一个值,该值确定此 UIElement 是否可以作为拖放操作的放置目标。 (继承自 UIElement) |
AllowedScriptNotifyUris |
注意 为Windows 8.1编译的应用不支持 AllowedScriptNotifyUris。 请改为更新应用清单的 ApplicationContentUriRules 部分。 有关详细信息,请参阅“备注”部分。 获取或设置允许向此 WebView 触发 ScriptNotify 事件的 URI 的安全列表。 |
AllowedScriptNotifyUrisProperty |
注意 为Windows 8.1编译的应用不支持 AllowedScriptNotifyUrisProperty。 请改为更新应用清单的 ApplicationContentUriRules 部分。 有关详细信息,请参阅“备注”部分。 标识 AllowedScriptNotifyUris 依赖属性。 |
AllowFocusOnInteraction |
获取或设置一个值,该值指示当用户与元素交互时是否自动获取焦点。 (继承自 FrameworkElement) |
AllowFocusWhenDisabled |
获取或设置禁用的控件是否可以接收焦点。 (继承自 FrameworkElement) |
AnyScriptNotifyUri |
注意 为 Windows 8.1 编译的应用不支持 AnyScriptNotifyUri。 请改为更新应用清单的 ApplicationContentUriRules 部分。 有关详细信息,请参阅“备注”部分。 获取一个值,该值可用于设置 AllowedScriptNotifyUris 属性,以指示任何页面都可以对此 WebView 触发 ScriptNotify 事件。 |
BaseUri |
获取统一资源标识符 (URI) ,表示 XAML 加载时 XAML 构造对象的基本统一资源标识符 (URI) 。 此属性在运行时用于统一资源标识符 (URI) 解析。 (继承自 FrameworkElement) |
CacheMode |
获取或设置一个值,该值指示应尽可能将呈现的内容缓存为复合位图。 (继承自 UIElement) |
CanBeScrollAnchor |
获取或设置一个值,该值指示 UIElement 是否可以成为滚动定位的候选项。 (继承自 UIElement) |
CanDrag |
获取或设置一个值,该值指示是否可以在拖放操作中将元素作为数据拖动。 (继承自 UIElement) |
CanGoBack |
获取一个值,该值指示在向后导航历史记录中是否至少有一个页面。 |
CanGoBackProperty |
标识 CanGoBack 依赖属性。 |
CanGoForward |
获取一个值,该值指示前进导航历史记录中是否至少有一个页面。 |
CanGoForwardProperty |
标识 CanGoForward 依赖属性。 |
CenterPoint |
获取或设置元素的中心点,即发生旋转或缩放的点。 影响元素的呈现位置。 (继承自 UIElement) |
Clip |
获取或设置用于定义 UIElement 内容的轮廓的 RectangleGeometry。 (继承自 UIElement) |
CompositeMode |
获取或设置一个属性,该属性为其父布局和窗口中的元素声明备用组合和混合模式。 这与混合 XAML/Microsoft DirectX UI 中涉及的元素相关。 (继承自 UIElement) |
ContainsFullScreenElement |
获取一个值,该值指示 WebView 是否包含支持全屏的元素。 |
ContainsFullScreenElementProperty |
标识 ContainsFullScreenElement 依赖属性。 |
ContextFlyout |
获取或设置与此元素关联的浮出控件。 (继承自 UIElement) |
DataContext |
获取或设置 FrameworkElement 的数据上下文。 数据上下文的常见用途是 当 FrameworkElement 使用 {Binding} 标记扩展并参与数据绑定时。 (继承自 FrameworkElement) |
DataTransferPackage |
注意 Windows 8.1后,DataTransferPackage 可能会更改或不可用。 请改用 CaptureSelectedContentToDataPackageAsync。 获取传递到 WebView 的剪贴板 DataPackage。 |
DataTransferPackageProperty |
注意 DataTransferPackageProperty 可能会在Windows 8.1后更改或不可用。 请改用 CaptureSelectedContentToDataPackageAsync。 标识 DataTransferPackage 依赖属性。 |
DefaultBackgroundColor |
获取或设置在 HTML 内容未指定颜色时用作 WebView 背景的颜色。 |
DefaultBackgroundColorProperty |
标识 DefaultBackgroundColor 依赖属性。 |
DefaultExecutionMode |
获取当前应用中 WebView 实例的默认线程行为。 |
DeferredPermissionRequests |
获取等待授予或拒绝的权限请求的集合。 |
DesiredSize |
获取此 UIElement 在布局过程的度量传递期间计算的大小。 (继承自 UIElement) |
Dispatcher |
获取与此对象关联的 CoreDispatcher 。 CoreDispatcher 表示可以访问 UI 线程上的 DependencyObject 的工具,即使代码是由非 UI 线程启动的。 (继承自 DependencyObject) |
DocumentTitle |
获取当前显示在 WebView 中的页面的标题。 |
DocumentTitleProperty |
标识 DocumentTitle 依赖属性。 |
ExecutionMode |
获取一个值,该值指示 WebView 是在 UI 线程还是非 UI 线程上承载内容。 |
ExitDisplayModeOnAccessKeyInvoked |
获取或设置一个值,该值指定在调用访问密钥时是否消除访问键显示。 (继承自 UIElement) |
FlowDirection |
获取或设置文本和其他 UI 元素在控制其布局的任何父元素中的流动方向。 此属性可以设置为 LeftToRight 或 RightToLeft。 在任何元素上将 FlowDirection 设置为 RightToLeft 会将对齐方式设置为右对齐,将阅读顺序设置为从右到左,并将控件的布局设置为从右到左流动。 (继承自 FrameworkElement) |
FocusVisualMargin |
获取或设置 FrameworkElement 的焦点视觉对象的外部边距。 (继承自 FrameworkElement) |
FocusVisualPrimaryBrush |
获取或设置用于为 FrameworkElement 绘制或 |
FocusVisualPrimaryThickness |
获取或设置 FrameworkElement 或 |
FocusVisualSecondaryBrush |
获取或设置用于为 FrameworkElement 绘制或 |
FocusVisualSecondaryThickness |
获取或设置 FrameworkElement 或 |
Height |
获取或设置 FrameworkElement 的建议高度。 (继承自 FrameworkElement) |
HighContrastAdjustment |
获取或设置一个值,该值指示在启用高对比度主题时框架是否自动调整元素的视觉属性。 (继承自 UIElement) |
HorizontalAlignment |
获取或设置在布局父级(如面板或项控件)中组合时应用于 FrameworkElement 的水平对齐特征。 (继承自 FrameworkElement) |
IsAccessKeyScope |
获取或设置一个值,该值指示元素是否定义其自己的访问键范围。 (继承自 UIElement) |
IsDoubleTapEnabled |
获取或设置一个值,该值确定 DoubleTapped 事件是否可以源自该元素。 (继承自 UIElement) |
IsHitTestVisible |
获取或设置此 UIElement 的包含区域是否可以为命中测试返回 true 值。 (继承自 UIElement) |
IsHoldingEnabled |
获取或设置一个值,该值确定 Holding 事件是否可以源自该元素。 (继承自 UIElement) |
IsLoaded |
获取一个值,该值指示元素是否已添加到元素树中并已准备好进行交互。 (继承自 FrameworkElement) |
IsRightTapEnabled |
获取或设置一个值,该值确定 RightTapped 事件是否可以源自该元素。 (继承自 UIElement) |
IsTapEnabled |
获取或设置一个值,该值确定 Tapped 事件是否可以源自该元素。 (继承自 UIElement) |
KeyboardAcceleratorPlacementMode |
获取或设置一个值,该值指示控件 工具提示 是否显示其关联的键盘快捷键的组合键。 (继承自 UIElement) |
KeyboardAcceleratorPlacementTarget |
获取或设置一个值,该值指示显示快捷键组合的控件 工具提示 。 (继承自 UIElement) |
KeyboardAccelerators |
获取使用键盘调用操作的组合键的集合。 加速器通常分配给按钮或菜单项。
|
KeyTipHorizontalOffset |
获取或设置一个值,该值指示键提示相对于 UIElement 的左或右放置距离。 (继承自 UIElement) |
KeyTipPlacementMode |
获取或设置一个值,该值指示相对于 UIElement 边界放置访问键提示的位置。 (继承自 UIElement) |
KeyTipTarget |
获取或设置一个值,该值指示访问键提示所针对的元素。 (继承自 UIElement) |
KeyTipVerticalOffset |
获取或设置一个值,该值指示键提示相对于 UI 元素的放置距离。 (继承自 UIElement) |
Language |
获取或设置适用于 FrameworkElement 以及对象表示形式和 UI 中当前 FrameworkElement 的所有子元素的本地化/全球化语言信息。 (继承自 FrameworkElement) |
Lights |
获取附加到此元素的 XamlLight 对象的集合。 (继承自 UIElement) |
ManipulationMode |
获取或设置用于 UIElement 行为和手势交互的 ManipulationModes 值。 设置此值可处理应用代码中此元素的操作事件。 (继承自 UIElement) |
Margin |
获取或设置 FrameworkElement 的外部边距。 (继承自 FrameworkElement) |
MaxHeight |
获取或设置 FrameworkElement 的最大高度约束。 (继承自 FrameworkElement) |
MaxWidth |
获取或设置 FrameworkElement 的最大宽度约束。 (继承自 FrameworkElement) |
MinHeight |
获取或设置 FrameworkElement 的最小高度约束。 (继承自 FrameworkElement) |
MinWidth |
获取或设置 FrameworkElement 的最小宽度约束。 (继承自 FrameworkElement) |
Name |
获取或设置对象的标识名称。 当 XAML 处理器从 XAML 标记创建对象树时,运行时代码可以按此名称引用 XAML 声明的对象。 (继承自 FrameworkElement) |
Opacity |
获取或设置对象的不透明度的程度。 (继承自 UIElement) |
OpacityTransition |
获取或设置对 Opacity 属性的更改进行动画处理的 ScalarTransition。 (继承自 UIElement) |
Parent |
获取对象树中此 FrameworkElement 的父对象。 (继承自 FrameworkElement) |
PointerCaptures |
获取所有捕获的指针的集合,表示为 Pointer 值。 (继承自 UIElement) |
Projection |
获取或设置呈现此元素时要应用的透视投影 (三维效果) 。 (继承自 UIElement) |
RenderSize |
获取 UIElement 的最终呈现大小。 不建议使用 ,请参阅备注。 (继承自 UIElement) |
RenderTransform |
获取或设置影响 UIElement 呈现位置的转换信息。 (继承自 UIElement) |
RenderTransformOrigin |
获取或设置 RenderTransform 声明的任何可能的呈现转换相对于 UIElement 边界的原点。 (继承自 UIElement) |
RequestedTheme |
获取或设置 UIElement (使用的 UI 主题及其子元素) 用于资源确定。 使用 RequestedTheme 指定的 UI 主题可以替代应用级 RequestedTheme。 (继承自 FrameworkElement) |
Resources |
获取本地定义的资源字典。 在 XAML 中,可以通过 XAML 隐式集合语法将资源项建立为属性元素的 |
Rotation |
获取或设置顺时针旋转的角度(以度为单位)。 相对于 RotationAxis 和 CenterPoint 旋转。 影响元素的呈现位置。 (继承自 UIElement) |
RotationAxis |
获取或设置旋转元素的轴。 (继承自 UIElement) |
RotationTransition |
获取或设置 ScalarTransition,该 ScalarTransition 对 Rotation 属性的更改进行动画处理。 (继承自 UIElement) |
Scale |
获取或设置 元素的刻度。 相对于元素的 CenterPoint 缩放。 影响元素的呈现位置。 (继承自 UIElement) |
ScaleTransition |
获取或设置 Vector3Transition,该 Vector3Transition 对 Scale 属性的更改进行动画处理。 (继承自 UIElement) |
Settings |
获取一个 WebViewSettings 对象,该对象包含用于启用或禁用 WebView 功能的属性。 |
Shadow |
获取或设置 由 元素投射的阴影效果。 (继承自 UIElement) |
Source |
获取或设置统一资源标识符 (URI) 要显示在 WebView 控件中的 HTML 内容的源。 |
SourceProperty |
标识 Source 依赖属性。 |
Style |
获取或设置在布局和呈现期间为此对象应用的实例 Style 。 (继承自 FrameworkElement) |
TabFocusNavigation |
获取或设置一个值,该值修改 tabbing 和 TabIndex 对此控件的工作方式。 (继承自 UIElement) |
Tag |
获取或设置可用于存储有关此对象的自定义信息的任意对象值。 (继承自 FrameworkElement) |
Transform3D |
获取或设置呈现此元素时要应用的三维转换效果。 (继承自 UIElement) |
TransformMatrix |
获取或设置要应用于 元素的转换矩阵。 (继承自 UIElement) |
Transitions |
获取或设置应用于 UIElement 的 Transition 样式元素的集合。 (继承自 UIElement) |
Translation |
获取或设置元素的 x、y 和 z 呈现位置。 (继承自 UIElement) |
TranslationTransition |
获取或设置对 Translation 属性的更改进行动画处理的 Vector3Transition。 (继承自 UIElement) |
Triggers |
获取为 FrameworkElement 定义的动画触发器的集合。 不常用。 请参阅“备注”。 (继承自 FrameworkElement) |
UIContext |
获取 元素的上下文标识符。 (继承自 UIElement) |
UseLayoutRounding |
获取或设置一个值,该值确定对象及其可视子树的呈现是否应使用将呈现与整个像素对齐的舍入行为。 (继承自 UIElement) |
VerticalAlignment |
获取或设置在父对象(如面板或项控件)中组合时应用于 FrameworkElement 的垂直对齐特征。 (继承自 FrameworkElement) |
Visibility |
获取或设置 UIElement 的可见性。 不可见的 UIElement 不会呈现,也不会将其所需大小传达给布局。 (继承自 UIElement) |
Width |
获取或设置 FrameworkElement 的宽度。 (继承自 FrameworkElement) |
XamlRoot |
获取或设置 |
XYFocusDown |
获取或设置当用户按下方向键 (方向键) 时获取焦点的对象。 |
XYFocusDownNavigationStrategy |
获取或设置一个值,该值指定用于确定向下导航的目标元素的策略。 (继承自 UIElement) |
XYFocusDownProperty |
标识 XYFocusDown 依赖属性。 |
XYFocusKeyboardNavigation |
获取或设置一个值,该值使用键盘方向箭头启用或禁用导航。 (继承自 UIElement) |
XYFocusLeft |
获取或设置当用户向左按方向键 (方向键时获取焦点的对象) 。 |
XYFocusLeftNavigationStrategy |
获取或设置一个值,该值指定用于确定左侧导航的目标元素的策略。 (继承自 UIElement) |
XYFocusLeftProperty |
标识 XYFocusLeft 依赖属性。 |
XYFocusRight |
获取或设置当用户向右按方向键 (方向键时获取焦点的对象) 。 |
XYFocusRightNavigationStrategy |
获取或设置一个值,该值指定用于确定右导航目标元素的策略。 (继承自 UIElement) |
XYFocusRightProperty |
标识 XYFocusRight 依赖属性。 |
XYFocusUp |
获取或设置当用户按下方向键 (方向键) 时获取焦点的对象。 |
XYFocusUpNavigationStrategy |
获取或设置一个值,该值指定用于确定向上导航目标元素的策略。 (继承自 UIElement) |
XYFocusUpProperty |
标识 XYFocusUp 依赖属性。 |
方法
事件
AccessKeyDisplayDismissed |
在不应再显示访问密钥时发生。 (继承自 UIElement) |
AccessKeyDisplayRequested |
当用户请求显示访问密钥时发生。 (继承自 UIElement) |
AccessKeyInvoked |
当用户完成访问密钥序列时发生。 (继承自 UIElement) |
ActualThemeChanged |
在 ActualTheme 属性值更改时发生。 (继承自 FrameworkElement) |
BringIntoViewRequested |
在此元素或其后代之一上调用 StartBringIntoView 时发生。 (继承自 UIElement) |
CharacterReceived |
输入队列收到单个组合字符时发生。 (继承自 UIElement) |
ContainsFullScreenElementChanged |
当 WebView 当前是否包含全屏元素的状态发生更改时发生。 |
ContentLoading |
在 WebView 开始加载新内容时发生。 |
ContextCanceled |
当上下文输入手势继续为操作手势时发生,以通知元素不应打开上下文浮出控件。 (继承自 UIElement) |
ContextRequested |
当用户完成上下文输入手势(例如右键单击)时发生。 (继承自 UIElement) |
DataContextChanged |
在 FrameworkElement.DataContext 属性的值更改时发生。 (继承自 FrameworkElement) |
DOMContentLoaded |
在 WebView 完成分析当前 HTML 内容时发生。 |
DoubleTapped |
在此元素的命中测试区域上发生未经处理的 DoubleTap 交互时发生。 (继承自 UIElement) |
DragEnter |
当输入系统报告将此元素作为目标的基础拖动事件时发生。 (继承自 UIElement) |
DragLeave |
当输入系统报告将此元素作为原点的基础拖动事件时发生。 (继承自 UIElement) |
DragOver |
在输入系统报告出现以此元素为可能放置目标的基础拖动事件时发生。 (继承自 UIElement) |
DragStarting |
在启动拖动操作时发生。 (继承自 UIElement) |
Drop |
在输入系统报告出现将此元素作为放置目标的基础放置事件时发生。 (继承自 UIElement) |
DropCompleted |
结束此元素作为源的拖放操作时发生。 (继承自 UIElement) |
EffectiveViewportChanged |
在 FrameworkElement的有效视区 更改时发生。 (继承自 FrameworkElement) |
FrameContentLoading |
当 WebView 中的帧开始加载新内容时发生。 |
FrameDOMContentLoaded |
当 WebView 中的帧已完成分析其当前 HTML 内容时发生。 |
FrameNavigationCompleted |
当 WebView 中的帧完成加载其内容时发生。 |
FrameNavigationStarting |
在 WebView 中的框架导航到新内容之前发生。 |
GettingFocus |
在 UIElement 接收焦点之前发生。 此事件是同步引发的,以确保在事件冒泡时不会移动焦点。 (继承自 UIElement) |
GotFocus |
在 UIElement 接收焦点时发生。 此事件以异步方式引发,因此焦点可以在冒泡完成之前再次移动。 (继承自 UIElement) |
Holding |
在此元素的命中测试区域上发生未处理的 保留 交互时发生。 (继承自 UIElement) |
KeyDown |
当 UIElement 具有焦点时按下键盘键时发生。 (继承自 UIElement) |
KeyUp |
在 UIElement 具有焦点时释放键盘键时发生。 (继承自 UIElement) |
LayoutUpdated |
当可视化树的布局更改时发生,因为布局相关的属性更改值或刷新布局的其他操作。 (继承自 FrameworkElement) |
LoadCompleted |
注意 LoadCompleted 可能会在Windows 8.1后更改或不可用。 请改用 NavigationCompleted。 在顶级导航完成且内容加载到 WebView 控件时或在加载过程中发生错误时发生。 |
Loaded |
在已构造 FrameworkElement 并将其添加到对象树中并准备好交互时发生。 (继承自 FrameworkElement) |
Loading |
在开始加载 FrameworkElement 时发生。 (继承自 FrameworkElement) |
LongRunningScriptDetected |
在 WebView 执行 JavaScript 时定期发生,使你停止脚本。 |
LosingFocus |
在 UIElement 失去焦点之前发生。 此事件是同步引发的,以确保在事件冒泡时不会移动焦点。 (继承自 UIElement) |
LostFocus |
当 UIElement 失去焦点时发生。 此事件以异步方式引发,因此焦点可以在冒泡完成之前再次移动。 (继承自 UIElement) |
ManipulationCompleted |
在 UIElement 上的操作完成时发生。 (继承自 UIElement) |
ManipulationDelta |
当输入设备在操作期间更改位置时发生。 (继承自 UIElement) |
ManipulationInertiaStarting |
在输入设备在操作期间与 UIElement 对象失去联系和延迟开始时发生。 (继承自 UIElement) |
ManipulationStarted |
在输入设备在 UIElement 上开始操作时发生。 (继承自 UIElement) |
ManipulationStarting |
在首次创建操作处理器时发生。 (继承自 UIElement) |
NavigationCompleted |
在 WebView 完成加载当前内容或导航失败时发生。 |
NavigationFailed |
注意 在Windows 8.1后,NavigationFailed 可能会更改或不可用。 请改用 NavigationCompleted。 当 WebView 无法完成导航尝试时发生。 |
NavigationStarting |
在 WebView 导航到新内容之前发生。 |
NewWindowRequested |
当用户在 WebView 中执行导致内容在新窗口中打开的操作时发生。 |
NoFocusCandidateFound |
当用户尝试通过制表键或方向箭头 (移动焦点) ,但焦点不会移动时发生,因为移动方向上找不到焦点候选项。 (继承自 UIElement) |
PermissionRequested |
当 WebView 中的操作需要授予该权限时发生。 |
PointerCanceled |
当进行接触的指针异常失去接触时发生。 (继承自 UIElement) |
PointerCaptureLost |
当此元素以前持有的指针捕获移动到另一个元素或其他位置时发生。 (继承自 UIElement) |
PointerEntered |
当指针进入此元素的命中测试区域时发生。 (继承自 UIElement) |
PointerExited |
当指针离开此元素的命中测试区域时发生。 (继承自 UIElement) |
PointerMoved |
当指针在指针停留在此元素的命中测试区域内时移动时发生。 (继承自 UIElement) |
PointerPressed |
当指针设备在此元素中启动 Press 操作时发生。 (继承自 UIElement) |
PointerReleased |
在释放之前启动 按下 操作的指针设备时发生,同时在此元素中。 请注意, 不保证按下 操作的结尾会触发 PointerReleased 事件;可能会触发其他事件。 有关详细信息,请参阅备注。 (继承自 UIElement) |
PointerWheelChanged |
在指针滚轮的增量值更改时发生。 (继承自 UIElement) |
PreviewKeyDown |
当 UIElement 具有焦点时按下键盘键时发生。 (继承自 UIElement) |
PreviewKeyUp |
在 UIElement 具有焦点时释放键盘键时发生。 (继承自 UIElement) |
ProcessKeyboardAccelerators |
按下 键盘快捷方式 (或快捷键) 时发生。 (继承自 UIElement) |
RightTapped |
当指针位于 元素上时发生右点击输入刺激时发生。 (继承自 UIElement) |
ScriptNotify |
当 WebView 控件中包含的内容使用 JavaScript 将字符串传递给应用程序时发生。 |
SeparateProcessLost |
当 WebView 使用 SeparateProcess 的 ExecutionMode 运行时发生,并且单独的进程丢失时发生。 |
SizeChanged |
当 ActualHeight 或 ActualWidth 属性更改 FrameworkElement 上的值时发生。 (继承自 FrameworkElement) |
Tapped |
在此元素的命中测试区域上发生其他未经处理的 点击 交互时发生。 (继承自 UIElement) |
Unloaded |
当此对象不再连接到main对象树时发生。 (继承自 FrameworkElement) |
UnsafeContentWarningDisplaying |
当 WebView 显示 SmartScreen 筛选器报告为不安全内容的警告页面时发生。 |
UnsupportedUriSchemeIdentified |
尝试使用 WebView 不支持的方案) 导航到统一资源标识符 (URI 时发生。 |
UnviewableContentIdentified |
当 WebView 尝试下载不受支持的文件时发生。 |
WebResourceRequested |
在发出 HTTP 请求时发生。 |