Почему может не срабатывать событие 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, время: 09:54. |