2012-11-01 5 views
1

Я хочу запустить сценарий, когда я не вишу элемент. Это какая-то деактивация чего-то другого, который ранее выполнялся в событии onmouseover. Так что я использую событие onmouseout для запуска этого скрипта, однако проблема: если я не навешиваю элемент и не оставляю его, сценарий просто не запускается. это происходит, если, например, наведите элемент слишком быстро или окно потеряет фокус. Как я могу это решить?Какое событие использовать вместо onmouseout для запуска, когда мышь не над элементом?

EDIT: Позвольте мне проиллюстрировать это по-другому, что мне нужно - это событие, которое нужно запустить, когда элемент не тронут мышью.

+1

Не обнаруживать наведение, если мышь перемещается слишком быстро, невозможно, если вы не отслеживаете движение мыши вручную и не запускаете все свои зависания. Затем вы можете добавить линейную интерполяцию, чтобы проверить перемещение курсора мыши между кадрами и вычислить все события onMouseX. –

+0

ну, может быть, я не хочу обнаруживать наведение здесь, я хочу проверить, закончилась ли мышь или нет –

+0

, если 'onMouseOut' потерян из-за быстрого перемещения, то так же' onMouseOver', чтобы вы могли нормально отслеживать свое состояние , –

ответ

1

Что делать, если вы обнаружили onmouseover на всей странице (через пузырьковое событие), и когда он входит в новый элемент, найдите, если исходный элемент, который вы наблюдаете последним, является родительским элементом текущего целевого элемента, если это не тогда знаете, что он вышел из исходного узла DOM, даже если onmouseout не срабатывал.

+0

Я не думаю, что браузер когда-либо забудет запускайте событие 'onmouseout' после того, как' onmouseover' запускается –

+1

@JanDvorak, хотя я бы так хотел, я видел похожие ожидания, разрушенные при изменении DOM. Хотя это не похоже на случай здесь, следует отметить, что такие предположения не всегда действительны (см. Http://stackoverflow.com/questions/2732818/if-you-delete-a-dom-element-do- any-events-that-started-with-that-element-contin) – Matt

+0

Интересная ссылка. Я не должен удивляться, что IE сделал что-то неправильно ;-) –

2

вы можете попробовать это,

<div id="div1" onmouseover="fucntionIn()" onmouseout="functionOut()">"Special Area"</div> 
<div id="div2" onmouseover="fucntionOut()">Other area</div> 

логика писать деактивировать код для OnMouseOver события другой области страницы.

+0

Мне нравится ваша логика, однако для этого элемента, который запустил код активации, должен выполняться код дезактивации. –

+0

hmmm .... тогда вы должны установить атрибут при деактивации элемента. затем выберите элемент, используя document.getElementById(). и проверьте, активирована ли она с помощью атрибута. если он активирован, отключите его. –

+0

«проверьте, активирован ли он» в каком случае? –

 Смежные вопросы

  • Нет связанных вопросов^_^