Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Эмуляция onmouseover (https://javascript.ru/forum/events/72840-ehmulyaciya-onmouseover.html)

zppetu16 02.03.2018 11:59

Эмуляция onmouseover
 
Добрый день!

Можно ли как-то осуществить? Может не на javascript, а на каком-то другом языке есть такая возможность?

Уточнения

1. Не обработать реальное событие onmouseover, которое выполнил пользователь, а именно эмулировать программно, без участия пользователя. Например что-то вроде

Elem = windows.document.querySelector ( 'some_css_selectotr' );
newOnMouseOver ( Elem );


Можно ли написать такую функцию newOnMouseOver которая будет вызывать событие будто пользователь навёл указатель мыши на Elem?

2. Именно наведение мыши, а не клик. Клик можно сделать с помощью imacros. А вот просто наведение мыши...

В общем, буду благодарен за любую помощь.

ksa 02.03.2018 13:57

Цитата:

Сообщение от zppetu16
Эмуляция onmouseover

http://javascript.ru/forum/events/80...mouseover.html

zppetu16 03.03.2018 09:56

ksa,
спасибо. А без jQuery, на простом js как-то можно?

j0hnik 03.03.2018 16:18

<button>старт</button>
<script>
	var bnt = document.querySelector('button')
	bnt.onmouseover=e=> alert('over');
// эмулируем
	bnt.dispatchEvent(new Event("mouseover"));

</script>

zppetu16 07.03.2018 17:04

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 не определено. Что я делаю неправильно?

Спасибо!

j0hnik 07.03.2018 17:18

наверное непонятно из за стрелки.
bnt.onmouseover=e=> alert('over');

аналогичный пример
bnt.onmouseover=function(e){
alert('over');
};


расшифровка такая, назначаем обработчик события mouseover (появление курсора над элементом) для кнопки bnt который будет вызывать функцию, в которой мы вызываем метод alert().

zppetu16 07.03.2018 17:30

j0hnik,
спасибо, понял; Вы очень толково объясняете. Нов моём случае всё равно не работает. Может в imacros нет доступа к объекту Event...

j0hnik 07.03.2018 17:56

я просто не знаю что за зверь imacros.
куда вы код вставляете и прочие детали

j0hnik 07.03.2018 18:02

увидел вашу правку с селектором точно не ошиблись?

наверное все таки не эмуляция нужна, а вызов нужной функции которая отвечает за меню.

Dilettante_Pro 07.03.2018 18:05

zppetu16,
Попробуйте вместо new Event применить new MouseEvent


Часовой пояс GMT +3, время: 01:33.