Lazyweb: нужен JavaScript, который удаляет элементы li на основе посещенного класса элемента - PullRequest
0 голосов
/ 11 января 2009

У меня есть эта страница, на которой есть много данных, которые мне не нужны, так как я уже нажал на нее, но она часто повторяется, поэтому мне приходится визуально искать синий. Я понял, что это может быть более эффективным, и спросил друга CSS, могу ли я установить элемент для скрытого в зависимости от того, была ли посещена содержащая ссылка. Очевидно, для этого вам нужен js.

Дерево, которое приводит к удалению (или отсутствию видимости) элемента li.result:

li.result
 div.avatar
  a

Я пытаюсь выяснить, как это сделать с помощью гугла, и получил кое-что о Expert Sex Change, которое не очень помогло. Как бы вы это сделали?

Это для Greasemonkey, поэтому советы, которые включают добавление кода на страницу и проверку файлов cookie, бесполезны . Я приношу свои извинения за то, что не сделал это более ясным, чем просто пометка ранее сообщения greasemonkey.

Ответы [ 3 ]

4 голосов
/ 11 января 2009

1.Вы можете использовать селектор a: visit css.

a:visited{
   display:none;
}

И он будет скрывать посещенные ссылки (по крайней мере, в Firefox).

2.Если вы хотите удалить div и li выше этого, вам, вероятно, потребуется использовать cookie-файл и запомнить, по каким ссылкам щелкнул пользователь.

Итак:

когда пользователь нажимает ссылку, поместите этот идентификатор ссылки в файл cookie. Затем для каждого идентификатора ссылки в файле cookie вы можете сделать с jQuery что-то вроде:

var ids = $.cookie("cookie_with_ids");
var split_ids = ids.split(','); // split by comma

for(var i= 0; i<split_ids.length; i++){
    $("link_"+split_ids[i]).parent().parent().hide();
}

HTML должен выглядеть примерно так:

<li class="result">
 <div class="avatar">
  <a href="#" id="unique_link_id_on_this_page"> ....

Это не проверено никакими средствами, но оно должно дать вам представление о том, что вы должны сделать.

Для обработки файлов cookie вы можете использовать плагин jquery cookie

0 голосов
/ 13 января 2009

Вот тот, кого подружил мне друг, который отлично работает. В основном публикуется на тот случай, если кто-то в итоге находит это полезным.

// ==UserScript==
// @name           Twitter Search Seen
// @namespace      http://ctho.org
// @description    Hides tweets you've seen
// @include        http://search.twitter.com/*
// ==/UserScript==

for each (var i in document.links) {
    if (i.parentNode.className == "msg" && i == i.parentNode.childNodes[1]) {
//alert(getComputedStyle(i, null).color);break;
        if (getComputedStyle(i, null).color == "rgb(147, 13, 133)") {
            i.parentNode.parentNode.style.display="none";       
        } 
    }
}

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

0 голосов
/ 12 января 2009

Обратите внимание, что я раньше не использовал Greasemonkey, и мои знания JS в лучшем случае упрощены.

Не могли бы вы добавить объявление стиля к существующему тегу <style> или <head> с использованием JavaScript?

Например, добавьте правило, которое применяет разные цвета к разным ссылкам:

li.result div.avatar a {
    color: #000;
}

li.result div.avatar a:visited {
    color: #111;
}

Затем пройдитесь по всем классифицированным li элементам result, проверяя, имеет ли a, содержащийся в нем, цвет #000 или #111 На мой взгляд, это создаст основную: посещаемую проверку. Я собираюсь проверить это сейчас (только для того, чтобы чему-то научиться), но жизнеспособны ли такие вещи?

...