(1)最簡單粗暴的方法,就是禁止掉瀏覽器整個頁面的滑動
document.body.addEventListener('touchmove', function (e) {
e.preventDefault()
}, {passive: false})
上邊代碼塊中的方法一般不建議使用,除非整個頁面都不可以滾動時
(2)除了需要滾動的部分,禁止掉瀏覽器滾動的默認事件(VUE中組件的部分代碼)
methods: {
// 某些元素可以滾動的方法
overscroll (el){
el.addEventListener('touchstart', function() {
let top = el.scrollTop
let totalScroll = el.scrollHeight
let currentScroll = top + el.offsetHeight
if(top === 0) {
el.scrollTop = 1;
}else if(currentScroll === totalScroll) {
el.scrollTop = top - 1;
}
})
el.addEventListener('touchmove', function (evt) {
if(el.offsetHeight < el.scrollHeight)
evt._isScroller = true
})
},
// 監聽事件方法
hiddenPrevent () {
if (!evt._isScroller) {
evt.preventDefault()
}
}
},
mounted () {
this.overscroll(document.querySelector('.content')) // 讓class爲content的部分有默認滾動事件
document.body.addEventListener('touchmove', this.hiddentPrevent, {passive: false})
},
destroyed () {
// 銷燬時移除監聽
document.body.removeEventListener('touchstart', this.hiddentPrevent, {passive: false})
document.body.removeEventListener('touchmove', this.hiddentPrevent, {passive: false})