Цель
Я хочу получить позицию касания соответственно направлению касания и в зависимости от того, движется ли кнопка входа или выхода (для теста я просто изменяю фон на данный момент)
Проблема
Консоль выдаёт мне следующую ошибку:
Cannot read property 'changedTouches' of undefined at HTMLDocument.checkScrollPosition
соответственно
Cannot read property 'touches' of undefined at HTMLDocument.checkScrollPosition
Я работаю с Laravel и обычным JS.
Это функция, которую я на самом деле пробую (она внутри ToggleLogin. js):
window.onload = function FadeLoginButton() {
const width = window.innerWidth;
if (width < 850) {
document.addEventListener("touchstart", startTouch);
document.addEventListener("touchmove", checkScrollPosition);
}
};
let touchstart;
function startTouch(e) {
touchstart = e.originalEvent.touches[0].clientY;
}
function checkScrollPosition(e) {
const touchend = e.originalEvent.changedTouches[0].clientY;
const button = document.getElementById("mobile-login-btn");
if (touchstart > touchend) {
button.style.background = "green";
} else {
button.style.background = "blue";
}
}
Или Вариация:
window.onload = function FadeLoginButton() {
const width = window.innerWidth;
if (width < 850) {
document.addEventListener("touchstart", checkScrollPosition);
document.addEventListener("touchmove", checkScrollPosition);
}
};
function checkScrollPosition(e) {
const touchstart = e.originalEvent.touches[0].clientY;
const touchend = e.originalEvent.changedTouches[0].clientY;
const button = document.getElementById("mobile-login-btn");
if (touchstart > touchend) {
button.style.background = "green";
} else {
button.style.background = "blue";
}
}
И это клинок, где вызывается функция:
<button class="floating-btn" id="mobile-login-btn" onClick="ToggleMobileLogin()">Login</button>
<div class=login-modal id="login-modal">
<form class="modal-content">
<input type="checkbox" class="close-button" onClick="ToggleMobileLogin()" />
<a class="close-cross"></a>
<input class="basic-input" placeholder="Name" autofocus />
<input class="basic-input" placeholder="Passwort" />
<button class="basic-btn">Anmelden</button>
</form>
</div>
@push('scripts')
<script src="{{ asset('js/components/ToggleLogin.js')}}"></script>
@endpush
Пробовал разные подходы в течение всего дня. Вдохновленные этими предложениями от stackoverflow:
Link1
Link2
Я также нашел эту запись, но это не помогает в моем случае.
Здесь вы можете найти целую ветвь
Я думаю, это простая ошибка javascript. Неопределенный, очевидно;) Может быть, кто-то может освободить меня?