Javascript Chrome应用程序webview和触摸滚动传播

Javascript Chrome应用程序webview和触摸滚动传播,javascript,html,webview,google-chrome-app,Javascript,Html,Webview,Google Chrome App,我很高兴用Chrome打包的应用程序替换Windows8 Metro应用程序。目前,它需要模仿Metro应用程序的外观和感觉。主页由多个水平排列的Web视图组成,可以进行大量水平滚动。我在尝试使用触摸设备水平滚动时遇到问题。如果滚动手势在webview上启动,则它将捕获滚动事件并阻止主机滚动。溢出隐藏在所有Web视图上。由于它们构成页面上的大部分内容,因此主机的有效滚动目标是有限的 webview内容是交互式的,因此我无法在可滚动内容上放置透明覆盖来捕获事件,至少不能没有某种方式将点击/触摸传播

我很高兴用Chrome打包的应用程序替换Windows8 Metro应用程序。目前,它需要模仿Metro应用程序的外观和感觉。主页由多个水平排列的Web视图组成,可以进行大量水平滚动。我在尝试使用触摸设备水平滚动时遇到问题。如果滚动手势在webview上启动,则它将捕获滚动事件并阻止主机滚动。溢出隐藏在所有Web视图上。由于它们构成页面上的大部分内容,因此主机的有效滚动目标是有限的

webview内容是交互式的,因此我无法在可滚动内容上放置透明覆盖来捕获事件,至少不能没有某种方式将点击/触摸传播到webview本身

关于如何实现这一点有什么想法吗


谢谢你的帮助

如果您可以使用jQuery来实现它,那么当光标不在WebView的顶部时,它会将滚动事件应用到页面本身。

我将在这里假设两件事: 设置Chrome应用程序的样式类似于设置网页的样式。 您当前的滚动解决方案依赖于使用overflow:hidden和仅使用JavaScript滚动


我为一页修改了一次类似的内容。这很奇怪,但我了解到,对于触摸设备,除非用户与滚动条交互,否则滚动条是看不见的。如果您将样式更改为overflow-x:scroll…将出现一个滚动条(稍后您将需要处理带有Modernizer的桌面或一些类似的方式来检测支持触摸的设备)。然后注释掉你的滚动代码(当然是暂时的,因为你需要它来进行非触摸)。如果溢出更改和scrolipt更改可以正常滚动,那么接下来需要做的就是检测触摸并有条件地打开脚本并适当地更改溢出。

也许有人会想出一些办法,但我怀疑这是否可行。您可以尝试将各种事件处理程序附加到WebView,以查看是否可以向上传播事件。是的,不幸的是,它看起来是这样的。我已经设法让滚动与覆盖工作,并能够通过发布点击坐标到网络视图执行。它限制了webview内容的功能,但这只是一个开始。仍然比为winJS写作有趣得多!我知道这个问题很老,但根据我的经验,Web视图或具有可滚动内容的子元素滚动&停止事件的滚动,直到它们具有可滚动区域。当可滚动区域完成时,元素将事件传播到父元素。因此,当滚动事件启动时,您可以隐藏或禁用WebView的可滚动内容,这将有助于将scoll事件传播到主框架。@Elle这是一个有害的编辑,已回滚。webview是一个技术术语,这里专门指
标记。还有一件事。对于某些设备,滚动条可能仍然可见。只是需要测试一下。