Почему может не срабатывать событие Input ?
Добрый вечер,
Подскажите, почему может не срабатывать событие Input ? Вот такой простой код: { //-------------------------------------------------------------------- function my_func_addEventListener(event) { console.log(event); } //-------------------------------------------------------------------- let element = document.getElementsByClassName("gLFyf gsfi")[0]; console.log(element); if(element == undefined) { alert("undefined"); } else { element.addEventListener("input", my_func_addEventListener); } } За поле ввода беру начальную страницу поиска. И на самой первой странице поиска - событие Input - срабатывает, функция my_func_addEventListener - вызывается. Но, как только я нажму поиск и гугл перейдет на страницу выдачи результатов поиска, то этот код уже не работает - событие Input не срабатывает, хотя имя класса - тоже самое. Не срабатывает даже: let element = document.getElementsByClassName("gLFyf gsfi")[0]; if(element == undefined) { alert("undefined"); } else { element.value = "Hello"; } В чем может быть причина ? |
Цитата:
|
Цитата:
|
Andy_kun, на странице 2 элемента с классами «gLFyf» и «gsfi»: первый - div, второй - input.
Вы выбираете первый элемент, у которого нет ни события input, ни свойства value. Замените document.getElementsByClassName("gLFyf gsfi")[0] на document.querySelector('input.gLFyf.gsfi') |
Потому что элементов с таким классом на странице поиска внезапно 2:
console.log(document.getElementsByClassName("gLFyf gsfi").length) Вообще, бессмысленно привязываться к именам класса которые явно являются результатом генерации. При любом следующем апдейте они изменятся. Лучше привяжись к имени и типу: document.querySelector('input[name="q"][type="text"]') |
Цитата:
|
Цитата:
|
Часовой пояс GMT +3, время: 15:27. |