Участник:T kns/hideoldcomments.user.js

Материал из Энциклопедия leprosorium.ru
Перейти к: навигация, поиск

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

  • Firefox / Safari: Удерживая клавишу Shift, нажмите на панели инструментов Обновить либо нажмите Ctrl-F5 или Ctrl-R (⌘-R на Mac)
  • Google Chrome: Нажмите Ctrl-Shift-R (⌘-Shift-R на Mac)
  • Internet Explorer: Удерживая Ctrl, нажмите Обновить либо нажмите Ctrl-F5
  • Opera: Выберите очистку кэша в меню Инструменты → Настройки
// ==UserScript==
// @name        Hide old comments
// @namespace   leprosorium+hideoldcomments
// @description Hides old comments in threads
// @include     https://*.leprosorium.ru/comments/*/*
// @include     https://leprosorium.ru/comments/*/*
// @version     0.6
// @grant       none
// ==/UserScript==
(function () {
  'use strict';
  var debug = function () {
    var args = Array.prototype.slice.call(arguments);
    //unsafeWindow.console.log('[++Old comments]', args.join('\n'), '\n[--Old comments]')
    //unsafeWindow.console.log('[++Old comments]', arguments, '\n[--Old comments]')
    unsafeWindow.console.log('[++Old comments]');
    for (var i = 0; i < args.length; i++) {
      unsafeWindow.console.log(args[i]);
    }
    unsafeWindow.console.log('[--Old comments]');
  }
  //debug(commentsHandler.showParent)

  if (!/^([a-z0-9]+\.)?leprosorium\.ru$/.test(location.host) || (location.search.indexOf('unread=on') === - 1 && location.hash !== '#new')) {
    debug('wrong page')
    return;
  } else {
    debug('initialized')
  }
  window.addEventListener('DOMContentLoaded', function () {
    try {
      var newcomms = document.querySelectorAll('div.comment.new');
      if (!newcomms.length) {
        debug('no new comments')
        return;
      }
      var oldcomms = document.querySelectorAll('div.comment:not(.new)');
      if (!oldcomms.length) {
        debug('no old comments')
        return;
      }
      var addstyle = function () {
        var style = document.createElement('style');
        style.type = 'text/css';
        style.innerHTML = '.oldcomment:not(.show) {display: none;}';
        document.head.insertBefore(style, document.head.childNodes[0]);
      },
      hidecomm = function (el) {
        debug('hide', el.id);
        el.classList.add('oldcomment')
        // hiddencomms[el.id] = el;
      };
      addstyle();
      for (var i = 0; i < oldcomms.length; i++) {
        hidecomm(oldcomms[i]);
      }
    } catch (er) {
      unsafeWindow.console.error('~~ERROR: ' + er + ' (line ' + (er.lineNumber || '') + ')')
    }
  }, false);
}) ()