Как программно нажать кнопку в Javascript на основе координаты xy

По сути, я хочу наложить холст поверх некоторого HTML, но при этом иметь возможность щелкать элементы ниже, например, кнопку или ссылку.

Я могу получить координату xy щелчка на холсте. Есть ли способ программно вызвать нажатие кнопки ниже с координатой xy?

Из любопытства: нужна ли вообще кнопка? Разве вы не можете просто выполнить функцию напрямую, когда на холсте щелкнули в определенных координатах?

blex 20.12.2020 13:33

Отвечает ли это на ваш вопрос? получайте клики через html canvas

pilchard 20.12.2020 13:36

Я предполагаю, что это правда, однако в идеале я хотел бы динамически распространять щелчок, не переопределяя «кликабельную» область всякий раз, когда появляется новая кнопка или сдвиг кнопки

neowenshun 20.12.2020 13:36

Затем, если вам не нужно обнаруживать события курсора на холсте, используйте предложенный пилчардом дубликат (canvas { pointer-events: none; } в CSS). В противном случае вам нужно будет получить положение кнопки и сравнить его с координатами щелчка x, y и нажать кнопку программно

blex 20.12.2020 13:38
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
Раскрытие чувствительных данных
Раскрытие чувствительных данных
Все внешние компоненты, рассмотренные здесь до сих пор, взаимодействуют с клиентской стороной. Однако, если они подвергаются атаке, они не...
Зод: сила проверки и преобразования данных
Зод: сила проверки и преобразования данных
Сегодня я хочу познакомить вас с библиотекой Zod и раскрыть некоторые ее особенности, например, возможности валидации и трансформации данных, а также...
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Мы провели Twitter Space, обсудив несколько проблем, связанных с последними дополнениями в Angular. Также прошла Angular Tiny Conf с 25 докладами.
Руководство ChatGPT по продаже мини JS-файлов
Руководство ChatGPT по продаже мини JS-файлов
JS-файл - это файл, содержащий код JavaScript. JavaScript - это язык программирования, который в основном используется для добавления интерактивности...
1
4
171
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Попробуй это:

document.elementFromPoint(x, y).dispatchEvent(new MouseEvent("click", {bubbles: true}));

document.elementFromPoint(50, 50).dispatchEvent(new MouseEvent("click", {bubbles: true}));
div{
  height:100px;
  width:100px;
  background:red;
  
}
<div onclick = "alert('clicked')">

</div>

спасибо этому ответу и этой статье

Привет! спасибо за ответ, это было то, что я искал, я понимаю, что он вернул холст, который был сверху, вместо кнопки под холстом, есть ли способ это исправить?

neowenshun 20.12.2020 13:57

Хорошо решено! Я использовал elementsFromPoint вместо elementFromPoint, он вернул список, единственная схематичная часть заключается в том, что я сделал это для доступа к элементу, который я ищу, в данном случае ко второму элементу.

neowenshun 20.12.2020 14:05

Другие вопросы по теме