问题模块 框架类型 问题类型 终端类型 微信版本 基础库版本
框架 微信小程序 Bug 客户端 all all
手指滑动 -> 页面滚动 -> 手指离开页面 -> 页面处于惯性滑动 -> 在这个时间点击页面固定元素
期待:触发固定元素的绑定事件
实际:页面滚动停止,并未触发事件
无法触发固定元素的绑定事件。 比如我有一个 fixed 的 导航,在页面处于惯性滑动时候,点击导航链接是无法跳转的,而是会停止页面滚动,这对于正常页面,是一个符合预期的反应。但对于不滚动的元素(position:fixed)无法触发 tap 事件就不符合直觉了。下面是简单的代码片段
wechatide://minicode/aF61XNm5722E
称上面的为情况一, 另外,还有一个更厉害的情况二
我原以为 fixed 的元素也属于整个 page, 正在滚动的是 page, 那么点击 fixed 的元素自然也算点击了 page,此时的反应为:页面停止滚动;从逻辑上讲也是算说的通,只是没那么完美
那么 我用一个 scroll-view 来滚动, fixed 元素也成为了与 scroll-view 同级元素了,那么 scrool-view 还处于惯性滑动期间,我点击 scroll-view 内部的元素会停止 scrool-view 的滚动(实际也是如此)。若点击与 scroll-view 同级的 fixed 元素就会触发 tap 事件了吧,事实更刺激:没有任何反应,scroll-view 不会停止,继续着惯性滑动,tap 事件也不响应,直到 scroll-view 的惯性滑动结束后,点击 fixed 元素才会触发事件 。就是说 scroll-view 只要在滚动,点击 scroll-view 同级别的其他元素,就无法触发事件
上面说的都是针对 tap 事件,实测发现,touchstart 事件,情况一仍然不触发,情况二却可以触发 :)
代码片段
wechatide://minicode/aF61XNm5722E
微信小程序开发问题解答
微信小程序开发者回答:
就说情况一, 请问一下, 在页面还处在惯性滚动的时间点, 点击一个绑定了事件的 fixed 元素,仅是停止页面的惯性滚动,而不触发事件,是否合理?
比如我要做一个自定义的 tabBar,这样的体验就会很差
情况二,我以为已经描述的够清楚了,稍微提供一下代码
---------------------------------
想不到只能回复一次,只能重新编辑了,情况二代码
wechatide://minicode/DBhsyNmR7c2w
-------------------------------------------
9-30号再次更新, 话说,你们交流社区的官方人员是不是有什么类似于 “消灭零回复”的 KPI任务,
回答问题基本都是索要代码片段,然后就置之不理了,是因为完成了 KPI?
搞笑的吧,为了复现,前后花了好几个钟头给你们反馈,就这么敷衍一下子么
微信小程序开发者回答:
目前在你所提供的代码片段中,是描述的页面在滑动未结束的时候,点击页面的时候,滚动会停止,点击没有事件绑定的时候同样会停止的,同时在页面活动的时候是会阻塞其余的事件,至于你说提到的情况二,麻烦提供下相关的代码片段
本文网址:http://www.91bianli.com/kaifazhinan/76035.html