Chyba znam twój problem. Próbujesz programowo zapytać o pozycję myszy. Być może masz kod podobny do tego:
$(document).one('mousemove.myModule', function (e) {
// e.pageY and e.pageX is undefined.
console.log('e.pageY: ' + e.pageY + ', e.pageX: ' + e.pageX); }
).trigger('mousemove.myModule');
To masz absolutną rację. Właściwości pageY i pageX na obiekcie zdarzenia nie zostaną zdefiniowane. W rzeczywistości istnieje wiele rzeczy w obiekcie zdarzenia, których tam nie będzie, a nie tylko .pageY
i .pageX
. Może być jakiś błąd w jQuery. W każdym razie, po prostu nie łączyć tego połączenia, aby wywołać i wyzwalać zdarzenie w $ (okno) zamiast tego. Nie pytaj mnie, dlaczego to działa, ale jednak dla mnie to zrobił:
$(document).one('mousemove.myModule', function (e) {
console.log('e.pageY: ' + e.pageY + ', e.pageX: ' + e.pageX); });
// Now e.pageY and e.pageX will be defined!
$(window).trigger('mousemove.myModule');
Czy to do testowania? – airportyh
Jedną rzeczą, którą można zrobić, to zapisać dane zdarzenia z ostatniego rzeczywistego zdarzenia mousemove, a następnie po uruchomieniu programowo ponownie użyć go, jeśli nie istnieją nowe dane zdarzeń. Jeśli rzeczywiste zdarzenia mousemove nie zostaną uruchomione, oznacza to, że mysz się nie poruszyła, więc parametr eventData z ostatniego prawdziwego mousemove powinien mieć aktualne położenie. – Mahn