#javascript #vue.js #vuejs2 #dom-events #event-listener
#javascript #vue.js #vuejs2 #dom-события #прослушиватель событий
Вопрос:
Я создал прослушиватель окон, который работал должным образом. Через некоторое время, я не знаю, когда именно, прослушиватель окон перестал работать. Событие изменения размера также не работает. Я понятия не имею, что может быть причиной того, что он не работает.
mounted () {
window.addEventListener('scroll', this.test)
},
destroyed () {
window.removeEventListener('scroll', this.test)
},
methods: {
test () {
console.log('test')
}
}
Редактировать
Я создал прослушиватель внутри основного компонента vue приложения, он все еще не работает.
<template>
<div id="application" class="" style="height: 200vh">
<!-- <router-view/>-->
</div>
</template>
<script>
export default {
name: 'App',
mounted() {
window.addEventListener('scroll', this.test);
},
methods: {
test () {
console.log('test')
}
},
watch: {
$route: {
immediate: true,
handler(to) {
document.title = this.$t(to.meta.title) || 'Some Default Title'
}
},
}
}
</script>
EDIT2
Когда компонент смонтирован, функция запускается дважды из прослушивателя событий, ни меньше, ни больше
экран
Комментарии:
1.
After some time
— значит, если вы загрузите свою страницу и подождете «некоторое время», это просто перестанет работать?2. Эта часть кода кажется правильной. Я думаю, нам нужно больше деталей, чтобы диагностировать проблему
3. Под «Через некоторое время» я имел в виду, что несколько дней назад это работало, теперь это вообще не работает
4. Можете ли вы подтвердить, что компонент был смонтирован правильно и никакие другие ошибки JS не мешают? То, что вы нам здесь показываете, выглядит неплохо.
5. Ни одной ошибки, только несколько предупреждений (языковые переменные). Я удивлен, потому что это выглядит хорошо, и это работало, но сегодня я обнаружил, что это перестало работать, и я пытаюсь выяснить, почему.
Ответ №1:
РЕШЕНИЕ
HTML-тег был установлен на 100vh, поэтому окно на самом деле не двигалось. Дочерний элемент внутри был прокручиваемым.