【发布时间】:2012-01-22 17:30:09
【问题描述】:
我正在使用 -webkit-overflow-scrolling:touch 来制作一个带有溢出的 div:scroll;平滑滚动 iOS 触摸事件。
它工作得非常好,只是它在滚动时似乎没有更新 element.scrollTop 或 element.scrollLeft。它只更新 element.scrollTop / 当动量耗尽并停止时触发滚动事件。
有谁知道找出当前滚动位置的方法以及是否有我可以监听的事件?我想知道是否可以通过 CSS3 属性找到它?谢谢
下面的示例显示了两次尝试:
<!DOCTYPE html>
<body>
<div id="display_a">Scroll is: 0</div>
<div id="display_b">Scroll is: 0</div>
<div id="element" style="width:800px;overflow-x:scroll;-webkit-overflow-scrolling:touch;">
<div style="font-size:100px;width:1850px;">
a b c d e f g h i j k l m n o p q r s t u v w x y z
</div>
</div>
<script>
var e = document.getElementById("element");
var display_a = document.getElementById("display_a");
var display_b = document.getElementById("display_b");
e.addEventListener("scroll",function(event){display_a.innerHTML = "Scroll is: " + event.target.scrollLeft;});
setInterval(function(){display_b.innerHTML = "Scroll is: " + e.scrollLeft;},100);
</script>
</body>
</html>
============ 更新============
iOS 8 已经对这种行为进行了排序。滚动事件现在在滚动时触发。
请注意,您现在必须在反弹滚动期间处理负滚动值。
【问题讨论】:
-
只想对迄今为止做出贡献的所有人表示非常感谢,我担心我们不会找到完美的解决方案,但下面有一些很好的建议。
-
iOS >8.x上的3rd-party浏览器问题依然存在
-
滚动事件不会在主屏幕 webapps 或 UIWebView 中触发
标签: javascript ios