Участник:T kns/hideoldcomments.user.js — различия между версиями

Материал из Энциклопедия leprosorium.ru
Перейти к: навигация, поиск
(почему бы и нет?)
 
 
(не показаны 3 промежуточные версии этого же участника)
Строка 2: Строка 2:
 
// @name        Hide old comments
 
// @name        Hide old comments
 
// @namespace  leprosorium+hideoldcomments
 
// @namespace  leprosorium+hideoldcomments
// @description Hides old comments in threads
+
// @description Hides old comments in threads # see da [[Участник:T kns/hideoldcomments.user.css]]
 
// @include    https://*.leprosorium.ru/comments/*/*
 
// @include    https://*.leprosorium.ru/comments/*/*
// @version    0.3
+
// @include    https://leprosorium.ru/comments/*/*
 +
// @version    0.6
 
// @grant      none
 
// @grant      none
 
// ==/UserScript==
 
// ==/UserScript==
Строка 11: Строка 12:
 
   var debug = function () {
 
   var debug = function () {
 
     var args = Array.prototype.slice.call(arguments);
 
     var args = Array.prototype.slice.call(arguments);
     unsafeWindow.console.log('[++Old comments]\n', args.join('\n'), '\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('You better look at [[Участник:T kns/hideoldcomments.user.css]]')
   if (!/^([a-z0-9]+\.)?leprosorium\.ru$/.test(location.host) || (location.search.indexOf('unread=on') === - 1 && location.hash != '#new')) {
+
 
 +
   if (!/^([a-z0-9]+\.)?leprosorium\.ru$/.test(location.host) || (location.search.indexOf('unread=on') === - 1 && location.hash !== '#new')) {
 
     debug('wrong page')
 
     debug('wrong page')
 
     return;
 
     return;
Строка 21: Строка 27:
 
   }
 
   }
 
   window.addEventListener('DOMContentLoaded', function () {
 
   window.addEventListener('DOMContentLoaded', function () {
     var
+
     try {
    newcomms = document.querySelectorAll('div.comment.new');
+
      var newcomms = document.querySelectorAll('div.comment.new');
    if (!newcomms.length) {
+
      if (!newcomms.length) {
      debug('no new comments')
+
        debug('no new comments')
      return;
+
        return;
    }
+
    var parentlinks = document.querySelectorAll('a.c_parent');
+
    if (!parentlinks.length) {
+
      debug('no parent links')
+
      return;
+
    }
+
    var oldcomms = document.querySelectorAll('div.comment:not(.new)'),
+
    hiddencomms = {
+
    },
+
    parentlinks = document.querySelectorAll('a.c_parent'),
+
    hidecomm = function (el) {
+
      debug('hide', el.id);
+
      el.style.display = 'none';
+
      hiddencomms[el.id] = el;
+
    },
+
    listenup = function (uplink) {
+
      var gotoid = /#(\d+)$/.exec(uplink.href);
+
      //debug('wut', uplink.href);
+
      if (gotoid && gotoid.length) {
+
        var parentid = gotoid[1];
+
        //debug('↑', parentid);
+
        uplink.addEventListener('click', function (ev) {
+
          //debug('click', parentid);
+
          if (parentid in hiddencomms && hiddencomms[parentid].style.display === 'none') {
+
            debug('show', parentid);
+
            hiddencomms[parentid].style.display = ''
+
          }
+
        }, false);
+
 
       }
 
       }
    };
+
      var oldcomms = document.querySelectorAll('div.comment:not(.new)');
    //debug('test')
+
      if (!oldcomms.length) {
    for (var i = 0; i < oldcomms.length; i++) {
+
        debug('no old comments')
      hidecomm(oldcomms[i]);
+
        return;
    }
+
      }
     for (var j = 0; j < parentlinks.length; j++) {
+
      var addstyle = function () {
       listenup(parentlinks[j]);
+
        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);
 
   }, false);
 
}) ()
 
}) ()

Текущая версия на 13:45, 28 августа 2015

// ==UserScript==
// @name        Hide old comments
// @namespace   leprosorium+hideoldcomments
// @description Hides old comments in threads # see da [[Участник:T kns/hideoldcomments.user.css]]
// @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]');
    for (var i = 0; i < args.length; i++) {
      unsafeWindow.console.log(args[i]);
    }
    unsafeWindow.console.log('[--Old comments]');
  }
  debug('You better look at [[Участник:T kns/hideoldcomments.user.css]]')

  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);
}) ()