Javascript-форум (https://javascript.ru/forum/)
-   Javascript под браузер (https://javascript.ru/forum/css-html/)
-   -   как реализовать в браузере display:none по ключевым словам для блоков (https://javascript.ru/forum/css-html/48780-kak-realizovat-v-brauzere-display-none-po-klyuchevym-slovam-dlya-blokov.html)

wlad2 16.07.2014 16:59

как реализовать в браузере 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> Похудение с&nbsp;помощью 25&nbsp;. БЕЗ кофе&nbsp;и... </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 или Хрома которые подобное помогут реализовать
может у кого есть готовое решение для таких махинаций, помогите..

newobject 17.07.2014 14:44

Если без учета вложенных элементов, это легко, вроде

divs=document.getElementsByTagName("div")
for(i in divs){if(/coffee/.test(divs[i].innerHTML)) divs[i].style.display="none"}


А так, регекспами решать наверное надо, я в них не силен.

рони 17.07.2014 15:43

newobject, вот такая кнопа есть


и это принципиально перебор делать через in а не обычным for?

newobject 17.07.2014 15:55

Цитата:

Сообщение от рони
вот такая кнопа есть

Какая разница? Это мельтешение только мешает. Не люблю свистопеределки.
Цитата:

Сообщение от рони
и это принципиально перебор делать через in а не обычным for?

Просто ясней. Если ему скорость нужна, сам перепишет. К тому же for in - это JS-way, по моему.:)

рони 17.07.2014 16:27

newobject,
то есть вам пофигу как выглядит сам код и рабочий ли он, главное подкинуть идею решения - ок:(

wlad2 18.07.2014 01:25

Цитата:

Сообщение от newobject (Сообщение 321461)
Если без учета вложенных элементов, это легко, вроде

divs=document.getElementsByTagName("div")
for(i in divs){if(/coffee/.test(divs[i].innerHTML)) divs[i].style.display="none"}


А так, регекспами решать наверное надо, я в них не силен.

большое спасибо за решение,
только как подключить сей JS к примеру в FF

есть страница с блоками она уже загружена в браузере, как к ней применить сей JS?

newobject 18.07.2014 02:52

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 03:07

Цитата:

Сообщение от wlad2
есть страница с блоками она уже загружена в браузере, как к ней применить сей JS?

Или я вас неправильно понял. Вы хотите скрывать блоки с рекламой, сделать что-то вроде фильтра? Тогда это решение Вам не подойдет. Во-первых, в том же фф там надо писать плагин или расширение, ЕМНИП, просто так произвольный js, он не даст выполнять. Во вторых, на страницах разных может быть разные структуры, разные блоки, не только дивы, и многократная вложенность, динамическая подгрузка и прочее. Там очень сложный код нужен, парой строк там не обойдешься.

Aetae 18.07.2014 12:32

newobject, f12 и выполняй себе любой js.
Для подключения скрипта на постоянной основе есть greasemonkey.
А для фильтрации рекламы ничего лучше adblock пока не придумали.(с плагином element highlighter если ручками сложно нужные элементы блочить)

wlad2 18.07.2014 16:52

Вложений: 1
пишет ошибку == Метод getPreventDefault() является устаревшим. Для его замены используйте метод defaultPrevented

Вложение 2283


Часовой пояс GMT +3, время: 11:46.