iOS Safari – How to disable overscroll but allow scrollable divs to scroll normally?

后端 未结 14 1609
南方客
南方客 2020-11-28 17:50

I\'m working on an iPad-based web app, and need to prevent overscrolling so that it seems less like a web page. I\'m currently using this to freeze the viewport and disable

14条回答
  •  我在风中等你
    2020-11-28 18:16

    this one works for me (plain javascript)

    var fixScroll = function (className, border) {  // className = class of scrollElement(s), border: borderTop + borderBottom, due to offsetHeight
    var reg = new RegExp(className,"i"); var off = +border + 1;
    function _testClass(e) { var o = e.target; while (!reg.test(o.className)) if (!o || o==document) return false; else o = o.parentNode; return o;}
    document.ontouchmove  = function(e) { var o = _testClass(e); if (o) { e.stopPropagation(); if (o.scrollTop == 0) { o.scrollTop += 1; e.preventDefault();}}}
    document.ontouchstart = function(e) { var o = _testClass(e); if (o && o.scrollHeight >= o.scrollTop + o.offsetHeight - off) o.scrollTop -= off;}
    }
    
    fixScroll("fixscroll",2); // assuming I have a 1px border in my DIV
    

    html:

    content

提交回复
热议问题