JavaScript-禁用移动设备上的页面刷新

JavaScript-禁用移动设备上的页面刷新,javascript,scroll,Javascript,Scroll,我正在尝试通过触摸滚动事件禁用移动设备上的页面刷新。 通过在线搜索,我发现了以下方法: /* w = flag determining if pageYOffset was 0 before trying scroll below it h = last pageYOffset */ function disablePageRefreshFacility() { let w,h=0; document.addEventListener('touchstart',function(

我正在尝试通过触摸滚动事件禁用移动设备上的页面刷新。 通过在线搜索,我发现了以下方法:

/*
w = flag determining if pageYOffset was 0 before trying scroll below it
h = last pageYOffset
*/
function disablePageRefreshFacility() {
    let w,h=0;
    document.addEventListener('touchstart',function(e) {
        if(e.touches.length!=1) return;
        h=e.touches[0].clientY; w=window.pageYOffset===0;

        // testLabel is DOM element just to show the current pageYOffset - for test     
        testLabel.innerHTML=window.pageYOffset;
    },false);
    document.addEventListener('touchmove',function(e) {
        let y=e.touches[0].clientY,d=y-h; h=y;
        if(w) { w=0; if(d>0) return e.preventDefault(); }
        if(window.pageYOffset===0&&d>0) return e.preventDefault();
    },false);
}
该页面只有testLabel DIV和document.body.style.height=“60000px”用于测试

问题:

  • 在页面未缩放时测试pageYOffset的值,pageYOffset会根据页面获取滚动值
  • 当页面缩放时,测试pageYOffset的值,该值保持为0,直到某个滚动点,当前我不知道如何检测。
  • 删除
    document.body.style.height=“60000px”
    行使正文不可滚动,然后在缩放时,滚动页面不会更新pageYOffset的值
注意事项:

  • 在Android浏览器上测试
  • 使用纯JS,没有框架
  • 测试是在touchstart上进行的,所以我在最后一次滚动后得到pageYOffset值
  • 问题摘要
  • 页面缩放时不会触发touchmove事件,除非我从初始内部高度开始“真实”滚动(可能在缩放之前)
  • 页面刷新问题尚未解决
  • 任何pageYOffset的解决方案(或替代方法)都有助于解决页面刷新问题。
    任何替代方案都能帮上大忙,尽管我想知道为什么touchmove事件没有触发,尽管页面被“滚动”(虽然被放大)。

    尝试过,但仍然无法工作,我仍然可以进行页面刷新…-可以在www.efsdk.com/test/pg_rf.htm中看到运行示例-在Android浏览器上测试…尝试在
    位置上更改:已修复还不起作用,请参见此页面-www.efsdk.com/test/pg_rf2.html如果您将相同的应用于
    html
    对象,则它应该起作用。已更改上述代码。已尝试,但仍无法工作:(请参阅此页-www.efsdk.com/test/pg_rf3.htm
    body {               
      overscroll-behavior: contain;
    }