Посчитать скролл
<p> </p>...<p> </p><!-- отступы --> <div id='id'>0</div> <p> </p>...<p> </p><!-- еще отступы --> var html=document.documentElement,body=document.body; function addEvent(el,type,fun){ if(el.addEventListener){el.addEventListener(type,fun,false);} else if(el.attachEvent){el.attachEvent('on'+type,fun);} } function getScrollTop(){ var a; if(window.pageXOffset!=undefined){a=pageYOffset;} else a=(html.scrollTop||body&&body.scrollTop||0)-html.clientTop; document.getElementById('id').innerHTML=a; } addEvent(window, 'DOMMouseScroll', getScrollTop);/* Gecko */ addEvent(window, 'mousewheel',getScrollTop);/* Opera */ addEvent(document, 'mousewheel', getScrollTop);/* IE */ При всплывании события скролла ф-я getScrollTop() выдает старые значения, а мне надо новые. Как заставить getScrollTop() выполняться после самого обработчика DOMMouseScroll? Спасибо |
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ru" lang="ru" dir="ltr"> <head> </head> <body style="height:7800px;"> <p> </p>...<p> </p><!-- отступы --> <div id='id' style="border:red solid 1px;min-width:42px;position:fixed;top:30%">0</div> <p> </p>...<p> </p><!-- еще отступы --> <script type="text/javascript"> var html=document.documentElement,body=document.body; function addEvent(el,type,fun){ if(el.addEventListener){el.addEventListener(type,fun,false);} else if(el.attachEvent){el.attachEvent('on'+type,fun);} } function getScrollTop(){ var a; if(window.pageXOffset!=undefined){a=pageYOffset;} else a=(html.scrollTop||body&&body.scrollTop||0)-html.clientTop; document.getElementById('id').innerHTML=a; } addEvent(window, 'DOMMouseScroll',function (){setTimeout('getScrollTop()',12)});/* Gecko */ addEvent(window, 'mousewheel',function (){setTimeout('getScrollTop()',12)});/* Opera */ addEvent(document, 'mousewheel',function (){setTimeout('getScrollTop()',12)});/* IE */ </script> </body> </html> |
Deff, спасибо.
Совсем запутался с очередностью обработчиков всплывания, я думал, что getScrollTop() имеет приоритет перед DOMMouseScroll, последняя выполняется после того, как отработает первая, а от введения задержки у меня совсем разум помутнел. Надо разбираться. |
Часовой пояс GMT +3, время: 08:08. |