您当前的位置:首页 > 网站建设笔记 >

javascript scroll事件

0

虽然scroll事件是在window对象上发生的,但它实际表示的则是页面中相应元素的变化。在混杂模式下,可以通过body元素的scrollLeft和scrollTop来监控到这一变化;而在标准模式下,除Safari之外的所有浏览器都会通过html元素来反映这一变化(Safari仍然基于body跟踪滚动位置),如下面的例子所示:

<script type="text/javascript">
(function(){
  var displayViewPortSize=null;
 
  function createDisplay(){
    if(displayViewPortSize==null){
      displayViewPortSize=document.createElement("div");
      displayViewPortSize.style.cssText="position:fixed;z-index:99999;right:8px;top:8px;padding:10px;color:black;background-color:white;border:1px solid #ccc;font-family:Arial;";
      document.body.appendChild(displayViewPortSize);
    }
  }
 
  function calcScrollTop(){
    if(document.compatMode=="CSS1Compat"){
      displayViewPortSize.innerHTML="scrollTop="+document.documentElement.scrollTop;
    }else{
      displayViewPortSize.innerHTML="scrollTop="+document.body.scrollTop;
  	}
  }
 
  if(window.addEventListener){
    window.addEventListener("load",function(event){
      createDisplay();calcScrollTop();
      window.addEventListener("scroll",function(event){
        calcScrollTop();
      },false);
    },false);
  }else if(window.attachEvent){
    window.attachEvent("onload",function(event){
      createDisplay();calcScrollTop();
      window.attachEvent("onscroll",function(event){
        calcScrollTop();
      });
    });
  }
})();
</script>

以上代码指定的事件处理程序会输出页面的垂直滚动位置——根据呈现模式不同使用了不同的元素。由于Safari 3.1之前的版本不支持document.compatMode,因此旧版本的浏览器就会满足第二个条件。与resize事件类似,scroll事件也会在文档被滚动期间重复被触发,所以有必要尽量保持事件处理程序的代码简单。

建站咨询

在线咨询真诚为您提供专业解答服务

咨询热线

137 1731 25507×24小时服务热线

微信交流

二维码终于等到你,还好我没放弃
返回顶部