1. JavaScript / Говнокод #7990

    +159

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    // ==UserScript==
    // @name	govnokod.ru new comments mark
    // @namespace	('__'X)
    // @description	govnokod.ru new comments mark for Ctrl+F
    // @include	http://*.govnokod.ru/*
    // @include	http://govnokod.ru/*
    // ==/UserScript==
    
    function addNewMark()
    {
    var	i, d = document.getElementsByTagName('div');
    	for (i in d) if (d[i].className == 'entry-comment-wrapper new')
    	{
    		d[i].getElementsByTagName('p')[0].getElementsByTagName('a')[1].innerHTML += 'new';
    	}
    }
    
    if (location.hostname.match(/govnokod\.ru$/))
    {
    	if (document.addEventListener)
    	{
    		document.addEventListener('DOMContentLoaded', addNewMark(), false);
    	} else {
    		window.addEventListener('load', addNewMark(), false);
    	}
    }
    //* OR
    //* 1) Copypaste into browser @field: javascript:var i,d=document.getElementsByTagName('div');for(i in d)if(d[i].className=='entry-comment-wrapper new')d[i].getElementsByTagName('p')[0].getElementsByTagName('a')[1].innerHTML+='new';void(0);
    //* 2) Ctrl+F for '#new'

    Накидал только что. Помечает новые посты меткой "#new", можно контролэфить.
    Работает только для страниц отдельных ГК, в том числе из мусорки.
    Треды до полсотни комментов можно и так оглядеть, если больше - открываю отдельно.
    Но всё равно стоит добавить фичу на стороне сервера.

    Запостил: ej, 26 Сентября 2011

    Комментарии (27) RSS

    • Не нужно. Минус
      Ответить
      • а что тебе нужно? Бледину?
        (вот контекст, а то не поймете)
        http://www.youtube.com/watch?v=vbrzk2PmUFs&feature=player_detailpage#t=25s
        Ответить
    • Нужно ещё пару рубрик:
      PHP.Даты; и
      Говнокод для Говнокода.
      Ответить
    • насколько я понял, это будет работать только для отдельных страниц с говнокодами, а в общей ленте - нет?
      Ответить
    • бля, опять for ... in
      Ответить
      • и что с for...in'ом не так?
        Ответить
        • бля, опять спрашивают, что не так с for ... in :-D
          энумерация пропертей же!
          Ответить
          • Нагуглил http://stackoverflow.com/questions/242841/javascript-foreach-vs-for, переписал так:
            var	d = document.getElementsByTagName('div'), i = d.length;
            	for (; i--;)
            //...
            	document.addEventListener
            	? document.addEventListener('DOMContentLoaded', addNewMark(), false)
            	: window.addEventListener('load', addNewMark(), false);
            Ответить
            • Поправка: while (i--)
              Ответить
              • Да, даже если и for, то for(;;i--)
                Ответить
              • Слушай, а почему
                window.addEventListener('load', addNewMark(), false);

                конструкция вида addNewMark() не вернёт ли свой результат?
                (а так как она ничё не возвращает - не получим ли мы фигу?)
                --
                (упс, там ниже уже написали... недоскроллил...)
                Ответить
            • в общем-то там есть и forEach есть, непринципиально как итерировать NodeList

              хотя тоже проще бы инъекцию стиля сделать и сделать класс new более заметным (я уже страйкера уговорил и он сделал чуть менее пастельно :)
              Ответить
    • Какое ужасное (на мой взгляд) оформление кода.
      Ответить
      • А я плюсану. Я вообще не программист. Оно работает и пригодилось, но если кому не лень, поправляйте.
        Ответить
    • А как оно так вообще работает? addEventListener'у нужна ссылка на функцию, а вы туда undefined передали.
      Ответить
      • Как юзерскрипт в Опере. Ошибок в логе нет. Лучше без скобок в отличие от function(){}?
        Ответить
        • Нет, без скобок не работает.
          Ответить
        • Очевидно в Опере очень шаловливыми руками писали интерпретатор...
          window.addEventListener("click", alert, false);
          window.addEventListener("click", alert("whatever"), false);

          С какой стати у вас работает - я не знаю.
          Ответить
          • в опере тоже не работает
            и типа не должно
            во второй строка eval забыли
            Ответить
          • Opera v11.10.2092 (последующие - fffuuu).
            window.addEventListener("click", alert, false); //* при каждом клике выводит текст "[object MouseEvent]"
            window.addEventListener("click", alert("whatever"), false); //* вывело "whatever" при вводе скрипта в адрес и всё


            Сабж без скобок таки работает, если оставить только
            window.addEventListener('load', addNewMark, false);

            безо всяких условий и документов, которые ничему не помогают, насколько я вижу.
            Ответить
    • ... и почему не JQuery? <img src='fat_green.jpg'>

      upd 201190271549 :
      кому-то режет глаз мой камент по поводу оформления кода? ОЛОЛО!
      Ответить
    • Хотел бы я подсветку новых комментариев на полосе прокрутки. Как поиск на странице в хроме. Было бы удобнее. Длинные треды приходится просто листать =(
      Ответить
    • показать все, что скрытоvanished
      Ответить

    Добавить комментарий