|
|
|
| установил событие document.onmousemove на функцию.
и есть например:
<div onmouseover='по этому событию появляется элемент со координатами diva'
onmouseout='тут исчезает'>...</div>
после того как элемент появляется для того что бы можно было по нему водить мышкой события diva onmouseover & onmouseout повторяются!
Проблема в том что когда document.onmousemove стоит на функцию появившийся элемент мегает при перемещении по нему мышки? И наблюдается такое только в IE.
Код по которому устанавливаю document.onmousemove для IE:
if(isMSIE || isOpera7){
document.onmousemove=function(){
main_mousex=event.clientX+document.body.scrollLeft
main_mousey=event.clientY+document.body.scrollTop
return false;
}
Если убрать событие то не мегает (но оно нужно)!
С чем такое связано?
Еще заметил что когда водишь мышкой по div постоянно срабатывают события diva mouseout & mouseover - но ведь я не убераю мышь с него, почему события есть? | |
|
|
|
|
|
|
|
для: serenya1983
(24.02.2010 в 03:45)
| | Функцию на событие onmousemove на объект document нужно назначать динамически (с использованием методов attachEvent и addEventListener) и внутри этой функции надо предусмотреть её удаление после первого её запуска (используя методы detachEvent и removeEventListener). | |
|
|
|
|
|
|
|
для: АЯ
(24.02.2010 в 10:55)
| | А если функция нужна на всё время работы страницы (почему не использовать document.onmousemove)?
И почему события mouseover & mouseout вызывается для объекта когды мышь перемещается по нему??? | |
|
|
|
|
|
|
|
для: serenya1983
(24.02.2010 в 11:49)
| | >"А если функция нужна на всё время работы страницы"
Значит, её нужно ЗАНОВО подключать после того, как она отработает свою функциональность*
-----
>"почему события mouseover & mouseout вызывается для объекта когды мышь перемещается по нему?"
Потому что ВСЯКОЕ движение мыши порождает "новый" DIV на месте "существующего" (того, который был создан раньше). И этот "новый" DIV перекрывает "существующий". Из-за этого перекрытия на "существующем" срабатывает onmouseout, а на "новом" - onmouseover.
Вам надо сделать следующим образом:
1. На документ по onload динамически навешиваете функцию_1 на событие onmousemove, которая порождает див.
2. В момент порождения дива функция_1 должна быть ликвидирована.
3. На порожденный див навешиваете функцию_2 на событие onmouseout.
4. Сработав, функция_2 снова навешивает на документ функцию_1 | |
|
|
|
|
|
|
|
для: АЯ
(24.02.2010 в 14:09)
| | Нужно всегда знать положение мыши на каждое её движения на всё время пока открыта страница, т.е. я так понял надо поставить функцию на событие через attachEvent, в функции отключить обработку события и в конце опять подключить, так???
И почему моргает только в IE?
Т.е. смысл примерно такой:
есть два div:
<div onmouseover='id_div.style.display="block" ' onmouseout=''id_div.style.display="none" '>...</div>
<div id='id_div' style='position:absolute;'>...</div>
Div с id = id_div мограет (только в IE) когда есть код (см. ниже)
function mousemove(x,y)
{
тут обрабтчик нужный всё время пока открыта страница
}
if(isMSIE || isOpera7){
document.onmousemove=function(){
e=event.clientX+document.body.scrollLeft
y=event.clientY+document.body.scrollTop
mousemove(x,y);
return false;
} | |
|
|
|