Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Получить позицию курсора при onBlur (https://javascript.ru/forum/misc/70952-poluchit-poziciyu-kursora-pri-onblur.html)

ruslan_mart 14.10.2017 19:33

Получить позицию курсора при onBlur
 
Отслеживаю клик по iframe с помощью такой небольшой хитрости:

frame.addEventListener('load', function() {
	window.addEventListener('blur', function(event) {
		if(document.activeElement === frame) {
			console.log(event.pageX) //undefined
		}
	});
});


Но вот не могу придумать способ, как можно отследить позицию курсора. OnMouseMove не предлагать, так как на Iframe он не распространяется. Может у кого-нибудь есть идеи, какие хитрости можно тут применить?
Есть идея периодически ставить на iframe какой-нибудь div, и чекать у него mousemove, но тут много других минусов всплывает, например: 1. Есть вероятность, что именно в момент клика этот div подставится под курсор, и соответственно - клика по iframe, как такого, не произойдёт; 2. Координаты будут неточными.

Заранее спасибо за любые идеи и предложения! :thanks:

Alexandroppolus 14.10.2017 20:37

Цитата:

Сообщение от ruslan_mart
Есть идея периодически ставить на iframe какой-нибудь div, и чекать у него mousemov

подозреваю, что ничего лучше не придумать.

вот набросок. https://jsfiddle.net/pcxrxfqo/
"шпион" присутствует 10% времени. Слежение не совсем точное, но тем не менее. Кликнуть по шпиону не так просто. Да и если произойдет, то пользователь не расстроится и просто кликнет ещё раз.

а так, понятное дело, следить нельзя, "песочница" и всё такое, браузер умышленно защищает.

ruslan_mart 14.10.2017 21:06

Alexandroppolus, придумал похожее решение как у Вас, работает на 90%. :) Кому интересно - в ЛС.

Я просто хочу, чтобы когда кликаешь по iframe, то он убирался и определялась позиция клика, по которой получаем элемент на странице c помощью document.elementFromPoint и имитируем по нему клик. Итог: пользователь кликает одновременно и в айфрейм и в реальный элемент.

P.S.: iframe невидимый.

P.P.S.: жалко, что не мобильных устройствах эти хитрости с событиями мыши провернуть не получится.


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