逝者如斯夫

          靜而思之
          數(shù)據(jù)加載中……

          DHTML的onScroll事件

          IE 瀏覽器提供了一個(gè) onscroll 事件用于捕捉頁(yè)面垂直和水平的滾動(dòng),但在Netscape 卻沒有提供這樣的事件,它只有一個(gè)屬性指明了滾動(dòng)條當(dāng)前的位置。寫上一點(diǎn)的代碼我們也一樣可以給Netscape 加上和IE 差不多的onscroll 事件和屬性。在IE 里,響應(yīng)onscroll 事件僅僅是在BODY 標(biāo)簽加上一個(gè)onscroll 事件屬性這樣簡(jiǎn)單,當(dāng)然這個(gè)屬性值也可以是一個(gè)函數(shù)。


          可以用第二種方法實(shí)現(xiàn)和onscroll 事件類似的功能,用自己的函數(shù)賦值一個(gè)特定事件。方法的思路是建立一個(gè)時(shí)間器不斷的檢測(cè)用戶是否滾動(dòng)了頁(yè)面,當(dāng)用戶滾動(dòng)頁(yè)面則調(diào)用那個(gè)我們賦值給了onscroll 函數(shù)。



          ????
          function ?testScroll()?{

          ????
          // ?程序剛開始時(shí)初始化滾動(dòng)條位置臨時(shí)變量
          ???? if ?(window._pageXOffset == null )?{
          ????window._pageXOffset?
          = ?window.pageXOffset
          ????window._pageYOffset?
          = ?window.pageYOffset
          ????}

          ????
          // ?實(shí)現(xiàn)和IE?類似的模塊
          ????document.body.scrollTop? = ?window.pageYOffset
          ????document.body.scrollLeft?
          = ?window.pageXOffset
          ????window.document.body.scrollHeight?
          = ?document.height
          ????window.document.body.scrollWidth?
          = ?document.width

          ????
          // ?如果臨時(shí)變量不等于當(dāng)前值則調(diào)用onscroll?事件
          ???? if ?(((window.pageXOffset != window._pageXOffset)? ||
          ????(window.pageYOffset
          != window._pageYOffset))? && ?(window.onscroll))
          ????window.onscroll()
          ????
          // ?設(shè)置臨時(shí)變量位置新值
          ????window._pageXOffset? = ?window.pageXOffset
          ????window._pageYOffset?
          = ?window.pageYOffset


          ????}

          ????
          // ?建立為Netscape?兼容的代碼
          ???? if ?(document.layers)?{
          ????document.body?
          = ? new ?Object
          ????setInterval(
          " testScroll() " , 50 )
          ????}

          ????
          // ?寫上自己onscroll?事件要做的事
          ???? function ?doScroll()?{
          ????
          // ?do?something
          ????}

          ????window.onscroll?
          = ?doScroll


          除了一個(gè)兼容的onscroll 事件以外,這個(gè)函數(shù)還建立一個(gè)跨瀏覽器的滾動(dòng)屬性集框架。在IE ,滾動(dòng)條當(dāng)前的位置屬性通過document.body 的一個(gè)屬性而被提供。我們一樣可以加入類似IE 提供的滾動(dòng)條屬性集的功能給Netscape Navigator 。

          ????屬性?描述

          ????window.onscroll ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? Sets?or?returns?the?
          function ?assigned?to?the?onscroll?event

          ????document.body.scrollTop

          ????document.body.scrollLeft???????????????? Returns?the?position?of?the?vertical?and?horizontal?scrollbars.

          ????document.body.scrollHeight

          ????document.body.scrollWidth ? ? ? ? ? ?? Returns?the?height?and?width?of?the?document

          ????document.body.clientHeight

          ????document.body.clientWidth ? ? ? ? ? ?? Returns?the?height?and?width?of?the?client?area?(the?currently?viewed?portion?of?the?document).

          如果使用用代碼實(shí)現(xiàn)滾動(dòng)效果,則兩個(gè)瀏覽器都提供了一個(gè)互相兼容的方法:用window.scrollTo(x,y) 和 window.scrollBy(x,y) 滾動(dòng)頁(yè)面。

          posted on 2007-03-25 02:32 ideame 閱讀(6046) 評(píng)論(0)  編輯  收藏 所屬分類: Script


          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 麻江县| 南城县| 保德县| 苍山县| 英超| 集安市| 勃利县| 桐梓县| 开鲁县| 芒康县| 赤峰市| 南昌县| 十堰市| 揭西县| 天水市| 文安县| 新兴县| 苗栗市| 股票| 榆树市| 镇康县| 攀枝花市| 航空| 拉萨市| 德州市| 大化| 巍山| 耒阳市| 白城市| 元阳县| 望江县| 喀什市| 镇平县| 格尔木市| 吴旗县| 高平市| 宜都市| 金阳县| 左贡县| 那曲县| 德江县|