Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用javascript或angularJS在页面顶部/底部时检测(事件)试图上下滚动,_Javascript_Html_Angularjs - Fatal编程技术网

使用javascript或angularJS在页面顶部/底部时检测(事件)试图上下滚动,

使用javascript或angularJS在页面顶部/底部时检测(事件)试图上下滚动,,javascript,html,angularjs,Javascript,Html,Angularjs,因此,当我已经在页面的顶部(或底部)时,我想检测滚动到顶部(或底部)。我在这里看到了一些类似问题,但唯一的答案是检测鼠标滚轮事件 但是考虑到我想在任何类似的动作(如按下向上/向下键,鼠标滚轮和触摸板滚动,或向上/向下翻页,或主页/结束…)触发时检测到它,我是否应该为它们中的每一个创建EventListener?有谁知道更好的方法吗???这是我目前为你准备的。无论滚动方式如何,我都能检测到你何时触顶或触底。问题是检测您在到达后试图保持滚动的时间,因为除非您实际滚动,否则滚动事件不会触发。我能想到的

因此,当我已经在页面的顶部(或底部)时,我想检测滚动到顶部(或底部)。我在这里看到了一些类似问题,但唯一的答案是检测鼠标滚轮事件


但是考虑到我想在任何类似的动作(如按下向上/向下键,鼠标滚轮和触摸板滚动,或向上/向下翻页,或主页/结束…)触发时检测到它,我是否应该为它们中的每一个创建EventListener?有谁知道更好的方法吗???

这是我目前为你准备的。无论滚动方式如何,我都能检测到你何时触顶或触底。问题是检测您在到达后试图保持滚动的时间,因为除非您实际滚动,否则滚动事件不会触发。我能想到的唯一一件事就是通过编程将屏幕稍微向上滚动,这样就可以再次滚动,但我不建议这样做。除此之外,除了为用户可以滚动的每种可能方式创建自定义事件之外,我看不到任何其他方式

$(function(){
var lastScrollBarPos = 0;
$(window).scroll(function(event){
   var browserViewportHeight = $(window).height(); 
   var hmtlDocHeight = $(document).height();
   var scrollBarPos = $(window).scrollTop(); 

   if (scrollBarPos > lastScrollBarPos){
       // downscroll code
       console.log('scroll down');
       if(hmtlDocHeight == browserViewportHeight + scrollBarPos){
         console.log('reached bottom');
       }
   } else {
      // upscroll code
      console.log('scroll up');   
      if(scrollBarPos == 0){
          //we are at the top and someone is scrolling
          console.log('reached top');
      }
   }
   lastScrollBarPos = scrollBarPos;
});
});

这就是到目前为止我为你准备的。无论滚动方式如何,我都能检测到你何时触顶或触底。问题是检测您在到达后试图保持滚动的时间,因为除非您实际滚动,否则滚动事件不会触发。我能想到的唯一一件事就是通过编程将屏幕稍微向上滚动,这样就可以再次滚动,但我不建议这样做。除此之外,除了为用户可以滚动的每种可能方式创建自定义事件之外,我看不到任何其他方式

$(function(){
var lastScrollBarPos = 0;
$(window).scroll(function(event){
   var browserViewportHeight = $(window).height(); 
   var hmtlDocHeight = $(document).height();
   var scrollBarPos = $(window).scrollTop(); 

   if (scrollBarPos > lastScrollBarPos){
       // downscroll code
       console.log('scroll down');
       if(hmtlDocHeight == browserViewportHeight + scrollBarPos){
         console.log('reached bottom');
       }
   } else {
      // upscroll code
      console.log('scroll up');   
      if(scrollBarPos == 0){
          //we are at the top and someone is scrolling
          console.log('reached top');
      }
   }
   lastScrollBarPos = scrollBarPos;
});
});

谢谢,实际上我想到了这些方法,我正在寻找更好的方法。而且我认为向后滚动根本不是一个好方法。。。因为它实际上阻止了用户访问页面的顶部或底部谢谢,实际上我想到了这些方法,我正在寻找更好的方法。而且我认为向后滚动根本不是一个好方法。。。因为它实际上阻止了用户到达页面的顶部或底部