не может получить доступ к элементам на веб-сайте ebay через расширение javascript на chrome - PullRequest
0 голосов
/ 01 мая 2020

У меня есть расширение chrome, которое извлекает все заказы со страницы заказов ebay, оно отлично работало в прошлом месяце, но теперь все неожиданно не могут получить доступ к некоторым элементам.

let elGridComp = document.getElementsByClassName ( "таблица сетка-компонент"); let elOrders = elGridComp [0] .childNodes [2] .childNodes; // elOrders имеет все элементы (в примере 105)

elOrders [0] .getAttribute ("class"); // works

elOrders [2] .getAttribute ("class") ; // выбросить исключение

, например, elOrders 0,1,3,5 вернет атрибут класса, но 2, 4 и 7 сгенерируют исключение Uncaught TypeError: elOrders [i] .getAttribute не является функция. На прилагаемой фотографии показаны некоторые из первых элементов в elOrders enter image description here

Спасибо

1 Ответ

1 голос
/ 01 мая 2020

Сообщение об ошибке означает, что elOrders[2] не имеет функции getAttribute, которая может произойти, если этот узел не является элементом HTML, а является текстовым узлом (devtools Chrome не показывает такие узлы, если это все пробелы , crbug.com / 823106 ) или узел комментария.

Решение состоит в том, чтобы использовать children, поскольку он возвращает только элементы в отличие от childNodes, который возвращает все типы узлов.

PS используйте devtools для установки точки останова и проверки фактического содержимого данных. Вы даже можете выбрать часть выражения и навести указатель мыши на его значение, например, если вы выберете elOrders[i], вы увидите его свойства.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...