- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
// ==UserScript==
// @name syomaGKignore
// @description x-cross to ban GK users for syoma
// @version 0
// @match http://govnokod.ru/*
// @match http://www.govnokod.ru/*
// @grant none
// ==/UserScript==
window.addEventListener('load', function() {
localStorage.setItem('banned', localStorage.getItem('banned') || JSON.stringify([]));
var banned = JSON.parse(localStorage.getItem('banned'));
for (var i = 0; i < banned.length; i++) {
var hide = document.querySelectorAll('.entry-author a[href$="/' + banned[i] + '"]');
for (var j = 0; j < hide.length; j++) {
hide[j].parentNode.parentNode.parentNode.style.display = 'none';
}
}
var count = document.querySelector('.enrty-comments-count');
count.style.cursor = 'pointer';
count.addEventListener('click', function() {
localStorage.setItem('banned', JSON.stringify([]));
location.reload();
});
var votes = document.querySelectorAll('.comment-vote');
for (var i = 0; i < votes.length; i++) {
var cross = document.createElement('div');
cross.innerHTML = '☓';
cross.style.display = 'inline-block';
cross.style.color = 'black';
cross.style.marginLeft = '10px';
cross.style.cursor = 'pointer';
cross.addEventListener('click', function() {
var id = this.parentNode.querySelector('.entry-author a').href.replace(/^.*\//, '');
var banned = JSON.parse(localStorage.getItem('banned'));
if (banned.indexOf(id) < 0)
banned.push(id);
localStorage.setItem('banned', JSON.stringify(banned));
location.reload();
});
votes[i].parentNode.insertBefore(cross, votes[i]);
}
});
Крестик для Сёмы на чистейшем JS, без $ и сложных евентов на аяксы. Работает только на страницах конкретных постов (другие и не нужны, с бормандстока кликнул по ссылке — попал куда надо), и только после полной загрузки страницы. Разбанить всех — это клик по цифре с общим количеством комментариев под постом, рядом со ссылкой на RSS.
Вот ленивая жопа. Нет бы пересчитать на лету.
Хотя, Страйкер их уже сам запорол.
Да, об этом я забыл. Ну тогда скрытие вынести в функцию, и вызывать при инициализации и по крестику, а reload по крестику убрать.
P.S. В своё оправдание скажу, что у борманда, видимо, по этой же причине, вообще нет крестиков при просмотре зеркал постов, только в стоке.
У борманда их нет только потому, что он — ленивая жопа.
https://yadi.sk/i/Nm8TE3bh3SybbR
https://yadi.sk/i/ze8iFb3u3SybbZ
Ну и пара старых фоточек оттуда же:
https://yadi.sk/i/a_Ukl3tIrFTzw
https://yadi.sk/i/NwQI8AEYrFU3T
З.Ы. А по юзабилити — там, к примеру, в редакторе автодополнения нету.
не знал что тебя так зовут
Вот ленивая жопа. Нет бы отдельную кнопку сделать.
Не делай так больше никогда. Есть же for... of
Меня шмонай ты, вертухай,
Да загляни под юбочку,
Да посмотри на булочки.
Понюхай попку носиком,
Прикинься, киса, пёсиком,
Вот в этом вся и разница,
Кто хочет, а кто дразнится.
©Любимая группа мамки админа
Интересно, а по-другому можно?
Vindicar разработал хак для ГК. Кажется, для подгрузки комментов в стоке.
В jQuery есть live/delegate/on-питушня, которая умеет заранее описать элементы, на которые навесится обработчик события, когда они будут созданы - надо почитать исходники (что-то в исходниках слишком много делегирования действий другим функция, надо IDE открывать, чтоб уследить за мыслью) или статьи.
В юзерскриптах и расширениях (по крайней мере в хромных) можно указать стадию, на которой скрипт начнёт работать.
А каковы нынче IDE для JS?
Чувак, ты реально крэйзи.
IDE — это как минимум однозначный правильный go to definition по проекту и дебаг.
> однозначный правильный go to definition
Вероятно, для такого плагины есть. Хотя, в динамическом питухе эта штука должна как лампа накаливания на большую часть мощности греться, а на меньшую - выдавать что-то полезное.
> дебаг
console.log поприятнее будет; особенно - для асинхронной питушни, где легче распечатать всё, что нужно, чем через события прыгать.
В браузерах есть отличные гуёвые отладчики. У node.js есть мощный прыщgdb-подобный отладчик.
Ну правильно, я просто хотел узнать, о чем ты подумал, когда сказал
> надо IDE открывать, чтоб уследить за мыслью
> я просто хотел узнать, о чем ты подумал
Да, я действительно об IDE, где есть прыжки, подумал. Хотя, там код какой-то абстрактный сильно, проще нагуглить статью на хабре и почитать.
Шланг (тоже встроенный в студию) вроде тоже умеет, и даже отлаживать
Но язык настолько динамичный, что кодинсайт для него крайне плохой
В документации к Greasemonkey в разделе про @run-at document-start пишут "To detect if you are running at document-start time, check the value of document.readyState".
Т.е. на этапе document-start страница только начала грузиться, но document уже есть, и за ним можно следить. В теории, должно работать.