-
Вебмастеру
(
http://forum.oszone.net/forumdisplay.php?f=22)
Как скрывать на открытой вебстранице конкретный элемент содержащий строку?
Надо мне както скрывать на открытой вебстранице конкретный элемент содержащий конкретную строку.
Например, на странице форума "стопка" элементов <TABLE>....</TABLE> (не вложенные а последовательные), один из которых содержит строку QWERT
как перебрать элементы, проверить в каком встречается заданная строка и скрыть элемент?
Эдблок и эдгард вроде такую опцию не предлагают.
Если писать скрипт, то первый вопрос, как вообще прицепить скрипт к браузеру, чтобы он применялся при открытии вэбстраницы и изменял её?
|
Цитата:
Цитата Yewgeniy
Если писать скрипт, то первый вопрос, как вообще прицепить скрипт к браузеру, чтобы он применялся при открытии вэбстраницы и изменял её? »
|
UserJS - во многих браузерах если и нет поддержки "из коробки", есть расширения, реализующие данный функционал: например Greasemonkey для Firefox или Tampermonkey для Chrome. Кстати, для отладки UserJS на Presto-версии Opera удобно использовать Violent Monkey.
Цитата:
Цитата Yewgeniy
"стопка" элементов <TABLE>....</TABLE>, один из которых содержит строку QWERT »
|
Нужно найти и скрыть таблицу (table), в одной из ячеек которой (td) есть строка QWERT?
|
Цитата:
Нужно найти и скрыть таблицу (table), в одной из ячеек которой (td) есть строка QWERT?
|
Да.
|
Yewgeniy, хотя... зачем перебирать td, если таблицы не вложенные? Вот, накатал простой пример:
Код:
// ==UserScript==
// @name Test UserJS
// @description Hides some tables
// @version 0.1
// @author Habetdin
// @homepage http://forum.oszone.net/
// @include http://forum.oszone.net/*
// @run-at document-end
// ==/UserScript==
window.addEventListener('load', function() {
var tables = document.getElementsByTagName("table");
for(var i = 0, n = tables.length; i < n; i++)
if(tables[i].innerHTML.indexOf("блядеканр") != -1)
{
tables[i].style.setProperty("display", "none", "important");
break;
}
}, false);
Скрывает последний пост с канделябром (#396) здесь (либо - этот пост, ибо то же слово в исходнике :lol: ).
Если нужно скрыть несколько таблиц - убрать из цикла break.
|
Цитата:
Скрывает последний пост с канделябром (#396) здесь (либо - этот пост, ибо то же слово в исходнике )
|
Пробую в хроме. Не скрывает.
показывает 1 работающий скрипт, но эффекта ноль
|
Однако... Хром отклоняет style.display = "*** !important", принимая только значения без "!important".
Изменил метод скрытия, см. код в предыдущем посте.
|
Работает!
и для моей задачи тоже работает
Спасибо! :up
А как тоже самое сделать для нескольких строк?
|
Код:
if(tables[i].innerHTML.indexOf("строка 1") != -1 || tables[i].innerHTML.indexOf("строка 2") != -1)
Ну и убрать break, как я писал выше.
|
Спасибо!
а нельзя ли в tables[i].innerHTML.indexOf(????????????) вставить несколько значений?
|
Yewgeniy, можно использовать регулярные выражения:
Код:
// ==UserScript==
// @name Test UserJS
// @description Hides some tables
// @version 0.2
// @author Habetdin
// @homepage http://forum.oszone.net/
// @include http://forum.oszone.net/*
// @run-at document-end
// ==/UserScript==
window.addEventListener('load', function() {
var tables = document.getElementsByTagName("table"),
regexp = /(мадамсрет|рвотник)/i;
for(var i = 0, n = tables.length; i < n; i++)
if(regexp.test(tables[i].innerHTML))
tables[i].style.setProperty("display", "none", "important");
}, false);
Тогда здесь пропадет уже три поста, #393-395. Но с регулярными выражениями осторожнее, тестируйте. А если не знаете - уж лучше длинный, но надежный вариант без них :tomato2:
|
Подскажите как сделать почти тоже самое. Только скрыть <div class="item">, если внутри этого дива есть слово "фывфайцуа"?
|
amohax, на основе скрипта из поста #4:
Код:
window.addEventListener('load', function() {
var items = document.querySelectorAll('div.item');
for(var i = 0, n = items.length; i < n; i++)
if(items[i].innerHTML.indexOf("фывфайцуа") != -1)
{
items[i].style.setProperty("display", "none", "important");
break;
}
}, false);
|
Время: 16:26.
© OSzone.net 2001-