Эмуляция onmouseover
Добрый день!
Можно ли как-то осуществить? Может не на javascript, а на каком-то другом языке есть такая возможность? Уточнения 1. Не обработать реальное событие onmouseover, которое выполнил пользователь, а именно эмулировать программно, без участия пользователя. Например что-то вроде Elem = windows.document.querySelector ( 'some_css_selectotr' ); newOnMouseOver ( Elem ); Можно ли написать такую функцию newOnMouseOver которая будет вызывать событие будто пользователь навёл указатель мыши на Elem? 2. Именно наведение мыши, а не клик. Клик можно сделать с помощью imacros. А вот просто наведение мыши... В общем, буду благодарен за любую помощь. |
Цитата:
|
ksa,
спасибо. А без jQuery, на простом js как-то можно? |
<button>старт</button> <script> var bnt = document.querySelector('button') bnt.onmouseover=e=> alert('over'); // эмулируем bnt.dispatchEvent(new Event("mouseover")); </script> |
j0hnik,
спасибо, здесь попробовал Ваш пример, работает, а как к себе перенести не понял. Не могли бы немного объяснить? 1. Где определяется объект Event? Просто я использую js в imacros, и у меня там выдаётся ошибка ReferenceError: Event is not defined, line 6 (Error code: -991) а на этом сайте этот пример работает. 2. bnt.onmouseover=e=> alert('over'); как работает эта строка? Я понимаю, что она устанавливает поведение элемента btn при событии onmouseover, но синтаксис непонятен (js наверное ещё плохо понимаю). Что такое e в том выражении? ************** У меня такая ситуация: на веб-странице при наведении мыши на опр. элемент появляется всплывающее меню. Я хочу программно "наводить" мышь на этот элемент, чтобы то меню появлялось. Нашёл селектор этого элемента: 'div:nth-child(2) > div:nth-child(1)', теперь хочу сделать так: var selector = 'div:nth-child(2) > div:nth-child(1)'; var Element1; Element1 = window.document.querySelector ( selector ); Element1.dispatchEvent ( new Event ( "mouseover" ) ); imacros отвечает, что Event не определено. Что я делаю неправильно? Спасибо! |
наверное непонятно из за стрелки.
bnt.onmouseover=e=> alert('over'); аналогичный пример bnt.onmouseover=function(e){ alert('over'); }; расшифровка такая, назначаем обработчик события mouseover (появление курсора над элементом) для кнопки bnt который будет вызывать функцию, в которой мы вызываем метод alert(). |
j0hnik,
спасибо, понял; Вы очень толково объясняете. Нов моём случае всё равно не работает. Может в imacros нет доступа к объекту Event... |
я просто не знаю что за зверь imacros.
куда вы код вставляете и прочие детали |
увидел вашу правку с селектором точно не ошиблись?
наверное все таки не эмуляция нужна, а вызов нужной функции которая отвечает за меню. |
zppetu16,
Попробуйте вместо new Event применить new MouseEvent |
Часовой пояс GMT +3, время: 04:06. |