Disable rubber band in iOS full screen web app

前端 未结 1 1926
南方客
南方客 2021-01-05 04:17

I have a full screen web app running on iOS. When I swipe down, the screen scrolls with the rubber band effect (bumping). I want to lock the whole document but still allow s

1条回答
  •  说谎
    说谎 (楼主)
    2021-01-05 05:03

    Calling preventDefault on the event is actually correct, but you don't want to do it for every component since this will also prevent scrolling in divs (as you mention) and sliding on range inputs for instance. So you'll need to add a check in the ontouchmove handler to see if you are touching on a component that is allowed to scroll.

    I have an implementation that uses detection of a CSS class. The components that I want to allow touch moves on simply have the class assigned.

    document.ontouchmove = function (event) {
        var isTouchMoveAllowed = false;
        var p = event.target;
    
        while (p != null) {
            if (p.classList && p.classList.contains("touchMoveAllowed")) {
                isTouchMoveAllowed = true;
                break;
            }
            p = p.parentNode;
        }
    
        if (!isTouchMoveAllowed) {
            event.preventDefault();
        }
    
    });
    

    0 讨论(0)
提交回复
热议问题