Видит ли пользователь элемент?

 
0
 
JavaScript
ava
beaver | 24.07.2007, 06:17
есть страница, часть страницы находиться за пределами отображаемой в окне браузера части.
пользователь покручивает окно, доходит до определенного элемента страницы.
необходимо в тот момент, когда этот элемент увидит посетитель выполнить некоторые действия.

можно ли реализовать такое, если да, то как?
точная реализация не нужна (все равно потом перелапачу под себя), подскожите хотябы направление: функции, команды, примерный алгоритм
Comments (2)
ava
SelenIT | 24.07.2007, 17:16 #
Задача интересная... Попробовал "в лоб" (учитывая только вертикальную координату):

<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
<div id="look">test</div>
<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
<script>
var b = document.body;
var t = document.getElementById('look');
function test() {
if ((b.scrollTop < t.offsetTop) && ((b.scrollTop + b.clientHeight) > (t.offsetTop + t.offsetHeight))) {
alert('Меня видно, ура!');
}
}
onscroll = onresize = test;
</script>

В таком простейшем виде вроде работает... Правда, если искомый элемент будет где-то внутри сложной верстки (т.е. вместо одного offsetTop понадобится проход по цепочке offsetParent-ов и т.п.), боюсь, оно может стать слишком жадным до ресурсов (придется кешировать все, что можно). Но единственная альтернатива, которую я вижу - делать аналогичную проверку периодически по таймеру...
ava
beaver | 24.07.2007, 19:46 #
спасибо, сейчас попробую

а по поводу сложной верстки - просто можно этот контрольный элемент вынести за рамки всех элементов верстки, хотя бы дивом с абсолютным позиционированием
Please register or login to write.
Firm of day
Вы также можете добавить свою фирму в каталог IT-фирм, и публиковать статьи, новости, вакансии и другую информацию от имени фирмы.
Подробнее
Contributors
  SelenIT   beaver
advanced
Submit