[英]How to intercept touch events over the UWP Webview component?
我正在创建一个UWP分屏应用程序。 我希望能够拖放webviews来改变他们的位置。
我无法订阅发生在webview表面上的触摸事件,以便开始处理拖动手势。 我的所有触摸都被webview消耗/捕获。
如何拦截通过UWP webview组件发生的触摸事件?
通常,我们不能通过WebView组件拦截触摸事件,这是设计的。 请参阅Web视图中的 输入事件和选项卡顺序 :
如WebView类页面上的Events表所示, Web视图不支持从UIElement继承的大多数用户输入事件 ,例如KeyDown , KeyUp和PointerPressed 。 相反,您可以将InvokeScriptAsync与JavaScript eval函数一起使用以使用HTML事件处理程序,并使用HTML事件处理程序中的window.external.notify来使用WebView.ScriptNotify通知应用程序。
通常,此处的解决方法是使用一些JavaScript库来识别/收集用户输入并使用InvokeScriptAsync方法和ScriptNotify事件与JavaScript交互。 但是,正如您所知,要在调用window.external.notify时启用外部网页来触发ScriptNotify
事件,您必须在应用清单的ApplicationContentUriRules部分中包含该页面的URI。 并且不允许使用域通配符(例如,“ https://.com ”和“https://。”)。 所以这不是你的选择。
对于您的方案,我建议您为网络视图添加标题或其他边框,然后拖动标题/边框以更改其位置,就像在Edge或Chrome中一样。 在这些浏览器中,在内容表面上拖放也不会改变浏览器的位置。 要改变它的位置,我们需要拖动其标题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.