Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 02.03.2018, 11:59
Новичок на форуме
Отправить личное сообщение для zppetu16 Посмотреть профиль Найти все сообщения от zppetu16
 
Регистрация: 02.03.2018
Сообщений: 5

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

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

Уточнения

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

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


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

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

В общем, буду благодарен за любую помощь.
Ответить с цитированием
  #2 (permalink)  
Старый 02.03.2018, 13:57
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,202

Сообщение от zppetu16
Эмуляция onmouseover
эмуляция mouseover
Ответить с цитированием
  #3 (permalink)  
Старый 03.03.2018, 09:56
Новичок на форуме
Отправить личное сообщение для zppetu16 Посмотреть профиль Найти все сообщения от zppetu16
 
Регистрация: 02.03.2018
Сообщений: 5

ksa,
спасибо. А без jQuery, на простом js как-то можно?
Ответить с цитированием
  #4 (permalink)  
Старый 03.03.2018, 16:18
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

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

</script>
Ответить с цитированием
  #5 (permalink)  
Старый 07.03.2018, 17:04
Новичок на форуме
Отправить личное сообщение для zppetu16 Посмотреть профиль Найти все сообщения от zppetu16
 
Регистрация: 02.03.2018
Сообщений: 5

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

Спасибо!

Последний раз редактировалось zppetu16, 07.03.2018 в 17:19. Причина: дополнил
Ответить с цитированием
  #6 (permalink)  
Старый 07.03.2018, 17:18
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

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

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


расшифровка такая, назначаем обработчик события mouseover (появление курсора над элементом) для кнопки bnt который будет вызывать функцию, в которой мы вызываем метод alert().
Ответить с цитированием
  #7 (permalink)  
Старый 07.03.2018, 17:30
Новичок на форуме
Отправить личное сообщение для zppetu16 Посмотреть профиль Найти все сообщения от zppetu16
 
Регистрация: 02.03.2018
Сообщений: 5

j0hnik,
спасибо, понял; Вы очень толково объясняете. Нов моём случае всё равно не работает. Может в imacros нет доступа к объекту Event...
Ответить с цитированием
  #8 (permalink)  
Старый 07.03.2018, 17:56
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

я просто не знаю что за зверь imacros.
куда вы код вставляете и прочие детали
Ответить с цитированием
  #9 (permalink)  
Старый 07.03.2018, 18:02
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

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

наверное все таки не эмуляция нужна, а вызов нужной функции которая отвечает за меню.
Ответить с цитированием
  #10 (permalink)  
Старый 07.03.2018, 18:05
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

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



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как сделать плавный переход для onmouseover Demidoff Общие вопросы Javascript 3 23.03.2014 12:52
Проблемы с событием onmouseover в разных браузерах jsuse Общие вопросы Javascript 4 29.11.2011 18:30
OnMouseOver и Дети Элемента Ваcя Общие вопросы Javascript 7 21.11.2011 12:42
Частое срабатывание onmouseover rolling Events/DOM/Window 0 09.09.2009 17:31
FireFox: onmouseover не работает при зажатой кнопке мыши no. Общие вопросы Javascript 4 19.08.2008 13:43