Как настроить таргетинг на все разделы любой веб-страницы, но различать их в javascript?

89
7

Итак, я пытаюсь создать расширение в Chrome (прототип для проекта, который я делаю), который нацелен на все теги <div> любой веб-страницы, скрывает их или, скорее, не отображает их до тех пор, пока пользователь кликает мышью (далее поясняется ниже). Таким образом, набрав URL-адрес в браузере, вы получите белую страницу. Человек нажимает, появляется первый <div> (возможно, мачта или меню). Пользователь снова нажимает кнопку и появляется второй <div>.


Я дошел до того, что могу скрыть или показать все <div> (очевидная легкая часть), но я не уверен, как продвигаться по таргетингу каждый раз, поскольку каждый сайт имеет для них другой идентификатор, все еще используя <div>. Это то, с чем мне нужно больше всего помочь.


Это часть более крупной операции, называемой Web Crank. Это просто физический кривошип, который контролирует скорость загрузки веб-страницы. Каждый раз, когда вы совершаете одно полное вращение кривошипа, загружается одна секция (первая <div>) веб-страницы. Чем быстрее вы идете, тем быстрее загружается страница.


Надеюсь, это достаточно ясно. Я новичок, когда дело доходит до этого, но в прошлом я сделал небольшое кодирование, и это не так уж и важно.


Спасибо за вашу помощь!

спросил(а) 2020-04-02T15:20:45+03:00 1 год, 3 месяца назад
1
Решение
90

Используя только DOM без каких-либо библиотек, выполните следующие действия:


document.getElementsByTagName("div")

доставит вам все <div> на странице. Чтобы перебрать их, используйте цикл for:


var divs = document.getElementsByTagName("div");
for (var i = 0; i < divs.length; i++) {
/* stuff */
}

В jQuery (который вы, вероятно, не должны использовать в плагине Chrome...):


$("div").each(function(i) { /* whatever */ });

То, что вы в основном хотите сделать, это перебрать все <div> и скрыть их все, а затем, когда вы закрутите кривошип, вызовите итератор, который проходит, и добавляет что-то обратно. Вероятно, что бы я сделал создайте очередь FIFO (как это?) из элементов "to-be-cranked", когда вы их прячете, а затем в качестве операции кривошипа (тем не менее вы это делаете), начните вытягивать предметы из очереди и показывая их снова.


Как побочная проблема, почему <div> хотя и не только все элементы блочного уровня? Вероятно, вы захотите выполнить поиск элементов <div>, <p>, <blockquote>, <ol>, <ul>, <dl> и <table>.

ответил(а) 2020-04-02T15:38:20.709863+03:00 1 год, 3 месяца назад
46

Если вы можете получить каждый div на странице, просто вставьте их в массив, и теперь вы можете их индексировать.

ответил(а) 2020-04-02T15:20:45+03:00 1 год, 3 месяца назад
-5

если вы можете использовать jQuery, используйте .each. что позволит вам повторять через сбор и собирать данные о них, показывать/скрывать и т.д.

ответил(а) 2020-04-02T15:20:45+03:00 1 год, 3 месяца назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема