Javascript позволяет моделировать взаимодействие с пользователем.
Любой сценарий может имитировать взаимодействие пользователя, например click
или focus
, с определенным элементом на странице, используя методы .click()
и .focus()
.
Пример:
const square = document.getElementsByClassName('square')[0];
const clickSquare = () => {
event.target.dataset.receivedAction = 'click';
event.target.innerHTML = '<p>I\'ve been clicked!</p>';
}
const clearSquare = () => {
square.removeAttribute('data-received-action');
square.innerHTML = '';
}
square.addEventListener('click', clickSquare, false);
const clickButton = document.querySelector('[data-deliver-action="click"]');
const clearButton = document.querySelector('[data-deliver-action="clear"]');
clickButton.addEventListener('click', () => square.click(), false);
clearButton.addEventListener('click', clearSquare, false);
.square {
display: block;
width: 120px;
height: 120px;
margin: 12px 6px;
text-align: center;
font-family: arial, helvetica, sans-serif;
font-weight: bold;
font-size: 14px;
text-transform: uppercase;
overflow: hidden;
cursor: pointer;
}
button {
display: block;
width: 160px;
margin: 6px;
cursor: pointer;
}
.square {
color: rgb(255, 0, 0);
background-color: rgb(255, 0, 0);
}
.square[data-received-action="click"] {
background-color: rgb(255, 255, 0);
}
<div class="square" tabindex="0"></div>
<button type="button" data-deliver-action="click">Click the Square</button>
<button type="button" data-deliver-action="clear">Clear Square</button>
Квадрат выше прослушивает click event
. Мы можем либо щелкнуть по квадрату напрямую, либо нажать кнопку Click the Square, которая затем щелкнет по самому квадрату с помощью метода .click()
.
Любое действие приводит к тому, что квадрат получает событие click
.
Но это возможно только потому, что метод .click()
существует.
Также был бы полезен метод .hover()
(или даже .mouseover()
), но его не существует.
Можно ли вычислительно смоделировать зависание (или наведение мыши) при отсутствии этих методов?
mouseover
с помощьюdispatchEvent
, но невозможно имитировать реальное наведение курсора, вызванное пользователем. - person Bergi   schedule 03.11.2019:hover
- этот вопрос связан с компьютерным моделированием взаимодействия человека с пользователем. - person Rounin   schedule 03.11.2019