zoukankan      html  css  js  c++  java
  • onscroll

    一、触发机制

    滚动条出现在body上,触发window上的scroll事件,如果滚动条出现在div上,则会触发div.onscroll 不会触发window.onscroll

    <div id="rightDiv" >
            <div id="header"></div>
            <div id="nav">nav</div>
            <div id="list">list</div>
        </div>
    var scrollDiv = document.getElementById('rightDiv');
        scrollDiv.onscroll = scrollEvt;
        window.onscroll = winScroll;
    
        function winScroll(){
            console.log('window scroll');  //不会触发
        }
        function scrollEvt(){ 
            console.log('scroll');  //触发
    }

    二、scrollTop 获取

    1、IE声明了doctype时,scrollTopdocumentElement上;

          未声明doctype时,情况较复杂:

           IE1011:使用两种方法获取都可以:documentElementbody 

           IE789:使用documentElement.scrollTop

           IE5:使用body.scrollTop

      注:IE9及以上才支持pageYOffset

      IE不支持scrollYFFChrome支持scrollYpageYOffset

    2、FF声明doctype时,使用documnet.documentElement.scrollTop

        未声明doctype时,使用document.body.scrollTop获取

    3、Chrome:不管声明doctype与否,scrolltop都在body

     window.pageYOffset  (Safari)

     兼容性的写法:

    var scrollTop = document.documentElement.scrollTop || window.pageYOffset || document.body.scrollTop;

     具体测试如下:

    DTD相关说明:

    页面具有 DTD,或者说指定了 DOCTYPE 时,使用 document.documentElement。

    页面不具有 DTD,或者说没有指定了 DOCTYPE,时,使用 document.body。

    在 IE 和 Firefox 中均是如此。

    为了兼容,不管有没有 DTD,可以使用如下代码:

    var scrollTop = window.pageYOffset  //用于FF
                    || document.documentElement.scrollTop  
                    || document.body.scrollTop  
                    || 0;

    documentElement 和 body 相关说明:

    body是DOM对象里的body子节点,即 <body> 标签;

    documentElement 是整个节点树的根节点root,即<html> 标签;

    DOM把层次中的每一个对象都称之为节点,就是一个层次结构,你可以理解为一个树形结构,就像我们的目录一样,一个根目录,根目录下有子目录,子目录下还有子目录。

    以HTML超文本标记语言为例:整个文档的一个根就是,在DOM中可以使用document.documentElement来访问它,它就是整个节点树的根节点。而body是子节点,要访问到body标签,在脚本中应该写:document.body。

  • 相关阅读:
    Asp.Net 构架(Http Handler 介绍) Part.2<转>
    大数据插入<转>
    网站开发技巧参考大全<转>
    qq校友好东西
    SQL2005存储过程解密 <转>
    用Lucene.net对数据库建立索引及搜索<转>
    用SharpDevelop3调试ASP.NET的方法
    【转】卢彦的利用xml实现通用web报表打印
    张仰彪第二排序法 <转>
    依赖注入那些事儿 <转>
  • 原文地址:https://www.cnblogs.com/lydialee/p/4847433.html
Copyright © 2011-2022 走看看