Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 16.08.2012, 10:54
Интересующийся
Отправить личное сообщение для _Ivan Посмотреть профиль Найти все сообщения от _Ivan
 
Регистрация: 27.07.2012
Сообщений: 12

Посчитать скролл
<p>&nbsp;</p>...<p>&nbsp;</p><!-- отступы -->
<div id='id'>0</div>
<p>&nbsp;</p>...<p>&nbsp;</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? Спасибо
Ответить с цитированием
  #2 (permalink)  
Старый 16.08.2012, 11:54
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

<!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>&nbsp;</p>...<p>&nbsp;</p><!-- отступы -->
<div id='id' style="border:red solid 1px;min-width:42px;position:fixed;top:30%">0</div>
<p>&nbsp;</p>...<p>&nbsp;</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>
Ответить с цитированием
  #3 (permalink)  
Старый 16.08.2012, 12:25
Интересующийся
Отправить личное сообщение для _Ivan Посмотреть профиль Найти все сообщения от _Ivan
 
Регистрация: 27.07.2012
Сообщений: 12

Deff, спасибо.
Совсем запутался с очередностью обработчиков всплывания, я думал, что getScrollTop() имеет приоритет перед DOMMouseScroll, последняя выполняется после того, как отработает первая, а от введения задержки у меня совсем разум помутнел. Надо разбираться.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
посчитать слова в форме TewxtArea kagan Общие вопросы Javascript 3 01.03.2013 00:32
Скролл как вконтакте shilinpavel Javascript под браузер 3 14.06.2012 18:44
Определить присутствует ли скролл на iframe sergiyko Общие вопросы Javascript 3 14.03.2011 23:15
как посчитать сумму выбранных элементов checkbox nikimak92 Общие вопросы Javascript 9 01.06.2010 10:16
Плавный скролл колёсиком Alerto Элементы интерфейса 5 27.08.2009 11:46