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
以下 WebView API 在 Windows 8.1 中已弃用:
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 版本
为Windows 8.1编译的应用不支持 AllowedScriptNotifyUris。 请改为更新应用清单的 ApplicationContentUriRules 部分。 有关详细信息,请参阅“备注”部分。
获取或设置允许将 ScriptNotify 事件触发到此 WebView 的 URI 的安全列表。
为Windows 8.1编译的应用不支持 AllowedScriptNotifyUrisProperty。 请改为更新应用清单的 ApplicationContentUriRules 部分。 有关详细信息,请参阅“备注”部分。
标识 AllowedScriptNotifyUris 依赖属性。
为Windows 8.1编译的应用不支持 AnyScriptNotifyUri。 请改为更新应用清单的 ApplicationContentUriRules 部分。 有关详细信息,请参阅“备注”部分。
获取一个值,该值可用于设置 AllowedScriptNotifyUris 属性,以指示任何页面都可以在此 WebView 中触发 ScriptNotify 事件。
Windows 8.1后,DataTransferPackage 可能会更改或不可用。 请改用 CaptureSelectedContentToDataPackageAsync。
获取传递到 WebView 的剪贴板 DataPackage。
DataTransferPackageProperty 可能会在Windows 8.1后更改或不可用。 请改用 CaptureSelectedContentToDataPackageAsync。
标识 DataTransferPackage 依赖属性。
获取与此对象关联的 CoreDispatcher 。 CoreDispatcher 表示可以访问 UI 线程上的 DependencyObject 的工具,即使代码是由非 UI 线程启动的。
(继承自 DependencyObject)
获取或设置文本和其他 UI 元素在控制其布局的任何父元素中的流动方向。 此属性可以设置为 LeftToRight 或 RightToLeft。 在任何元素上将 FlowDirection 设置为 RightToLeft 会将对齐方式设置为右对齐,将阅读顺序设置为从右到左,并将控件的布局设置为从右到左流动。
(继承自 FrameworkElement)
获取或设置 UIElement (使用的 UI 主题及其子元素) 用于资源确定。 使用 RequestedTheme 指定的 UI 主题可以替代应用级 RequestedTheme。
(继承自 FrameworkElement)
为指定的路由事件添加路由事件处理程序,并将该处理程序添加到当前元素的处理程序集合中。 将 handledEventsToo 指定为 true 以调用提供的处理程序,即使在其他位置处理事件也是如此。
(继承自 UIElement)
汇报 UIElement 的 DesiredSize。 通常,为其布局子级实现自定义布局的对象从其自己的 MeasureOverride 实现中调用此方法,以形成递归布局更新。
(继承自 UIElement)
每当应用程序代码或内部进程 ((例如重新生成布局传递)) 调用 ApplyTemplate 时调用。 简单来说,这意味着在 UI 元素在应用中显示之前调用 方法。 重写此方法以影响类的默认模板后逻辑。
(继承自 FrameworkElement)
在应用中处理 键盘快捷方式 (或快捷键) 之前调用。 每当应用程序代码或内部进程调用 ProcessKeyboardAccelerators 时调用。 重写此方法以影响默认加速器处理。
(继承自 UIElement)
在释放之前启动 Press 操作的指针设备时发生,而此元素中。 请注意, 不保证按下 操作的结束会触发 PointerReleased 事件;其他事件可能会改为触发。 有关详细信息,请参阅备注。
(继承自 UIElement)