针对 IOS 上的 safari
目的是禁止默认的拖动事件
但允许其中某div的滚动拖拽
禁止拖动的默认事件
document.body.ontouchmove=function(e){
e.preventDefault();
}
下面链接的搜索按钮打开之后的列表需要拖动
但要禁止全局拖动(带反弹效果的默认拖动效果)
http://itorr.sinaapp.com/fm
补充
还有个奇怪的现象 在触发了设置IOS safari特有的滚动样式的div的拖动事件 页面会自动禁止惯性拖动 猜测可能可以利用这个特性
你只是把 body 中的 touchmove 事件 prevent 掉了。
捕获到你想要拖动的 div 的 touchmove 事件就行了。
javascript
document.querySelectorAll('div')[0].ontouchmove = function(e) { // do something ... };
问题解决T_T 犯蠢了。。。
禁止body的触摸移动的默认动作之后
document.body.ontouchmove=function(e){
e.preventDefault();
}
在需要滚动拖拽的div上停止冒泡即可解决OAQ
div.ontouchmove=function(e){
e.stopPropagation();
//停止冒泡
};