使用_hyperscript绑定scroll事件监听器失效,点击等事件正常,求原因
解决_hyperscript scroll事件不生效的问题
scroll事件确实是标准HTML DOM事件,但它的触发逻辑和click这类事件存在差异:
- 当整个页面滚动时,scroll事件实际触发在window对象上,而非body元素,且该事件默认不会冒泡到body,所以你绑定在body上的scroll监听器无法接收到事件。
- click、touchstart这类事件会正常向上冒泡到body,因此绑定在body上能正常触发。
可行的解决方案
方案1:绑定到window对象
这是处理页面全局滚动的正确方式,直接把事件绑定到window上:
<body _="on window.scroll alert('something')"> <!-- content --> </body>
方案2:让body成为滚动容器
如果你的场景是body内部局部滚动(而非整个页面),可以给body设置滚动属性,让它自身产生滚动条:
body { height: 100vh; overflow: auto; }
此时body内部滚动时,你原本绑定在body上的scroll事件就能正常触发。
内容的提问来源于stack exchange,提问作者unix nexo
相关产品推荐
相关产品推荐

