Created
July 8, 2016 10:09
-
-
Save nekodobro/bfba9a92210957529472fde18f2abcf8 to your computer and use it in GitHub Desktop.
Скрипт для скрытия сообщений без файлов.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// ==UserScript== | |
// @name Dobro & Avatar! | |
// @namespace dobroavatar | |
// @version 1.0 | |
// @description Скрипт для скрытия сообщений без файлов. | |
// @author neko | |
// @match http://dobrochan.com/* | |
// @grant none | |
// ==/UserScript== | |
/** Cкрипт для скрытия сообщений, без файлов. | |
* @name dobroavatar | |
* @description | |
* {number} sec - Кол-во секунд, перезагрузка. | |
* {Array} threads - Массив состоящий из строк. ID нитей, в которых работает | |
* скрипт. | |
* {undefined} timerId - Пустая переменная, для таймера. | |
* {string} id - CSS-селектор, для метода querySelectorAll. | |
* {Object} thread - Коллекция элементов нити. | |
* {number} tdLen - Длинна коллекции thread. | |
* {undefined} point - Пустая переменная, для индекса threads, соответствующая | |
* нити, в которой находится клиент. | |
* @description | |
* Определение местонахождения клиента, нахождение всех элементов, при | |
* соответствии с id в массиве. | |
* Проверка на существование id, для начала работы. | |
* Вызов функции conceal, скрывающая все посты, без файлов. | |
* Запуск таймера. В каждом проходе функции t, проверяется, увеличилась ли | |
* коллекция элементов (появились новые сообщения) или нет. Если нет, ничего не | |
* происходит и таймер начинает новый цикл, а если есть, обновляется коллекция | |
* thread, запускается функция conceal, скрывающая новые посты, если в них нет | |
* файлов. tdLen, обновляет длину коллекции, запускается следующий цикл | |
* таймера. | |
*/ | |
(function() { | |
"use strict"; | |
var sec = 5, // Секунд до перезагрузки. | |
threads = ["thread_940090"], // Номер треда, через запятую добавлять ещё. | |
timerId, | |
id = detector(), | |
thread = document.querySelectorAll(id), | |
tdLen = thread.length, | |
point; | |
if (id) { | |
conceal(); | |
timerId = setTimeout(function t() { | |
if (document.getElementById(threads[point]).children.length !== | |
tdLen) { | |
thread = document.querySelectorAll( detector() ); | |
conceal(); | |
tdLen = document.getElementById(threads[point]).children.length; | |
} | |
timerId = setTimeout(t, sec * 1000); | |
}, sec * 1000); | |
} | |
/** Определение нити, формирование CSS-селектора, для поиска. | |
* @function detector | |
* @param {Array} threads - Массив, с id нитей. | |
* @return {string} id - CSS-селектор, для поиска. | |
* @return {number} point - Элемент массива, соответствующий данной нити. | |
* @description | |
* {undefined} i - Пустая, для присваивания длинны массива. Кол-во итераций | |
* цикла. | |
* {string} here - Возвращает id нити, в которой находится клиент. | |
* {undefined} id - Пустая. Для результата. | |
* @description | |
* Перебор каждого элемента массива и сравниванием, с текущим id. При нахождении | |
* совпадений, формирование CSS-селектора и сохранение индекса элемента. | |
*/ | |
function detector() { | |
var i, | |
here = document.querySelector("div.thread").id, | |
id; | |
for (i = threads.length - 1; i >= 0; i--) { | |
if (threads[i] === here) { | |
id = "div#" + threads[i] + " > table.replypost.post"; | |
point = i; | |
} | |
} | |
return id; | |
} | |
/** Скрытие сообщений, без файлов. | |
* @function conceal. | |
* @param {Object} thread - коллекция элементов, данной нити. | |
* @description | |
* {undefined} i - Пустая, для длинны коллекции. Кол-во итераций цикла. | |
* @descriotion | |
* Перебор каждого элемента коллекции. Проверка, на отсутствие класса, который | |
* находится у элементов, носящими файлы. При отсутствии, изменяется свойства | |
* элемента, свойство hidden, с false, на true. | |
*/ | |
function conceal() { | |
var i; | |
for (i = thread.length - 1; i >= 0; i--) { | |
if (!thread[i].querySelector("[class=\"file\"]")) { | |
thread[i].hidden = true; | |
} | |
} | |
} | |
})(); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment