1
我正在使用swipeleft和swiperight手勢在觸摸設備上切換對象。我們需要禁用頁面滾動,看起來用戶正在嘗試滑動,並且在變得清楚這是用戶希望的時候啓用頁面滾動。如何使用jQuery控制移動瀏覽器滾動行爲?
禁用頁面滾動以允許更好的滑動體驗非常簡單。我只是用preventDefault()
和存儲的座標以備將來使用:
this.touchMove = function(event)
{
event.preventDefault();
this.finalCoord.x = event.targetTouches[0].pageX;
this.finalCoord.y = event.targetTouches[0].pageY;
};
的問題是能夠當用戶通過一定的公差重新約定滾動。關鍵的難點是在同樣的觸摸事件中這樣做。
這是我來使其工作最接近,但它會導致生澀滾動和(潛在)從能夠查看地址欄塊用戶:
this.touchMove = function(event)
{
event.preventDefault();
this.finalCoord.x = event.targetTouches[0].pageX;
this.finalCoord.y = event.targetTouches[0].pageY;
var changeY = this.originalCoord.y - this.finalCoord.y;
if (changeY > this.config.threshold.y || changeY < (this.config.threshold.y * -1))
{
var move = window.pageYOffset + changeY;
window.scrollTo(0, move);
}
};
事情我已經嘗試過沒有工作:
- 有條件地撥打
preventDefault()
。這是最明顯的,但不幸的是,一旦調用preventDefault,似乎並沒有一種方法來否定它。 - 使用
stopPropigation()
。這並不妨礙頁面被滾動。 - 使用
return false
。這也不會阻止頁面滾動。 - 使用3D CSS轉換來執行滾動。事實上,這有潛力,但也引起了一些令人頭痛的行爲。
- 追加透明覆蓋
div
劫持事件。添加div
工作正常,但它不劫持事件。
有沒有辦法完成我想要的?