16.07.2014, 16:59
|
|
Кандидат Javascript-наук
|
|
Регистрация: 16.10.2010
Сообщений: 117
|
|
как реализовать в браузере display:none по ключевым словам для блоков
есть DIV блоки, их на странице много,
нужно скрывать те в которых встречаются ненужные слова
для примера слово "КОФЕ" такой блок должен display:none получать
<div class="teaser">
<a href="#" class="viewinfo" style="color:#000;text-decoration: none;">
<p></p>
<img class="teimage" src="/images/gigamega.ru/62489_200.jpg">
<div> Похудение с помощью 25 . БЕЗ кофе и... </div>
<p style="height:20px;margin:0;">gigamega.ru</p>
<input type="hidden" value="" rel="nofollow">
<input type="hidden" value="24.02.2014">
<input type="hidden" value="26.02.2014">
<input type="hidden" value="601">
<input type="hidden" value="">
<input type="hidden" value="Россия, Казахстан">
<input type="hidden" value="9.37 Kb">
<input type="hidden" value="200x200">
<input type="hidden" value="2">
<input type="hidden" value="000193eefdfb6fdbf701e17cf">
<input type="hidden" value="2260869">
<!-- <input type="hidden" value="" /> -->
</a>
<span>26.02.2014 <a href="#" class="viewinfo"><img src="/images/eye.png"></a> (601) <input class="zipcheck" id="zip_2260869" type="checkbox"></span>
</div>
есть ли плагины для FF или Хрома которые подобное помогут реализовать
может у кого есть готовое решение для таких махинаций, помогите..
|
|
17.07.2014, 14:44
|
Профессор
|
|
Регистрация: 10.07.2014
Сообщений: 145
|
|
Если без учета вложенных элементов, это легко, вроде
divs=document.getElementsByTagName("div")
for(i in divs){if(/coffee/.test(divs[i].innerHTML)) divs[i].style.display="none"}
А так, регекспами решать наверное надо, я в них не силен.
|
|
17.07.2014, 15:43
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,109
|
|
newobject, вот такая кнопа есть
и это принципиально перебор делать через in а не обычным for?
|
|
17.07.2014, 15:55
|
Профессор
|
|
Регистрация: 10.07.2014
Сообщений: 145
|
|
Сообщение от рони
|
вот такая кнопа есть
|
Какая разница? Это мельтешение только мешает. Не люблю свистопеределки.
Сообщение от рони
|
и это принципиально перебор делать через in а не обычным for?
|
Просто ясней. Если ему скорость нужна, сам перепишет. К тому же for in - это JS-way, по моему.
|
|
17.07.2014, 16:27
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,109
|
|
newobject,
то есть вам пофигу как выглядит сам код и рабочий ли он, главное подкинуть идею решения - ок
|
|
18.07.2014, 01:25
|
|
Кандидат Javascript-наук
|
|
Регистрация: 16.10.2010
Сообщений: 117
|
|
Сообщение от newobject
|
Если без учета вложенных элементов, это легко, вроде
divs=document.getElementsByTagName("div")
for(i in divs){if(/coffee/.test(divs[i].innerHTML)) divs[i].style.display="none"}
А так, регекспами решать наверное надо, я в них не силен.
|
большое спасибо за решение,
только как подключить сей JS к примеру в FF
есть страница с блоками она уже загружена в браузере, как к ней применить сей JS?
|
|
18.07.2014, 02:52
|
Профессор
|
|
Регистрация: 10.07.2014
Сообщений: 145
|
|
wlad2,
Я не совсем понял какие именно блоки надо скрывать. Если внешний, полностью, и если все скрываемые блоки имеют структуру
<body>
<div></div>
<div></div>
<div></div>
</body>
то это решение подойдет. Если же надо скрывать блоки произвольного уровня вложенности
<body>
<div></div>
<div><div></div</div>
<div><div><div></div</div></div>
</body>
-- то нет. А подключайте обычно -- внешним скриптом, или в конце тега body в <script></script>, не важно. как только подключите все будет работать. например
<body>
<div>foo кофе bar coffee baz</div>
<div>foo bar ягоды salad бараны baz</div>
<div>Видимый тег</div>
<div>foo bar сахар salad baz</div>
<script>
onload=function(){
var divs=document.getElementsByTagName("div")
for(var i in divs){
if(divs.hasOwnProperty(i)){
if(/кофе|ягоды|сахар/.test(divs[i].innerHTML)) divs[i].style.display="none"}
}}
</script>
</body>
Последний раз редактировалось newobject, 18.07.2014 в 18:56.
|
|
18.07.2014, 03:07
|
Профессор
|
|
Регистрация: 10.07.2014
Сообщений: 145
|
|
Сообщение от wlad2
|
есть страница с блоками она уже загружена в браузере, как к ней применить сей JS?
|
Или я вас неправильно понял. Вы хотите скрывать блоки с рекламой, сделать что-то вроде фильтра? Тогда это решение Вам не подойдет. Во-первых, в том же фф там надо писать плагин или расширение, ЕМНИП, просто так произвольный js, он не даст выполнять. Во вторых, на страницах разных может быть разные структуры, разные блоки, не только дивы, и многократная вложенность, динамическая подгрузка и прочее. Там очень сложный код нужен, парой строк там не обойдешься.
|
|
18.07.2014, 12:32
|
|
Тлен
|
|
Регистрация: 02.01.2010
Сообщений: 6,585
|
|
newobject, f12 и выполняй себе любой js.
Для подключения скрипта на постоянной основе есть greasemonkey.
А для фильтрации рекламы ничего лучше adblock пока не придумали.(с плагином element highlighter если ручками сложно нужные элементы блочить)
__________________
29375, 35
Последний раз редактировалось Aetae, 18.07.2014 в 12:34.
|
|
18.07.2014, 16:52
|
|
Кандидат Javascript-наук
|
|
Регистрация: 16.10.2010
Сообщений: 117
|
|
пишет ошибку == Метод getPreventDefault() является устаревшим. Для его замены используйте метод defaultPrevented
Снимок экрана 2014-07-18 в 16.51.00.jpg
|
|
|
|