Как получить только видимые элементы, используя document.getElementsByTag и document.queryselectAll
Я пытаюсь создать расширение Chrome, которое будет искать любые элементы с веб-страницы.
В настоящее время я использую, var elm = document.getElementsByTagName("input");
Это дает мне все элементы с тегом ввода.
Но иногда элемент не виден на экране, но присутствует в исходном коде, для этого, если я хочу фильтровать, я пытаюсь использовать свойства offsetwidth, left, right, height
elm.offsetWidth, но он всегда дает 0, поэтому я не могу отфильтровать.
Также у этих элементов нет атрибутов видимости, которые я могу использовать.
Есть ли другой способ, которым я могу сделать это с помощью Javascript?
1 ответ
Хитрость заключается в фильтрации element.offsetWidth !== 0 || element.offsetHeight !== 0
определить элемент виден.
Итак, в вашем примере используйте это:
var elm = [...document.querySelectorAll('input')]
.filter(x => x.offsetWidth !== 0 || x.offsetHeight !== 0)