- 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.
vistefan 02.03.2018 23:19 # 0
SemaReal 02.03.2018 23:35 # +1
vistefan 02.03.2018 23:38 # +3
syoma 03.03.2018 11:57 # 0
inho 02.03.2018 23:38 # +1
Вот ленивая жопа. Нет бы пересчитать на лету.
1024-- 03.03.2018 21:40 # 0
Хотя, Страйкер их уже сам запорол.
vistefan 03.03.2018 21:46 # 0
Да, об этом я забыл. Ну тогда скрытие вынести в функцию, и вызывать при инициализации и по крестику, а reload по крестику убрать.
P.S. В своё оправдание скажу, что у борманда, видимо, по этой же причине, вообще нет крестиков при просмотре зеркал постов, только в стоке.
bormand 03.03.2018 22:26 # 0
У борманда их нет только потому, что он — ленивая жопа.
vistefan 03.03.2018 22:27 # 0
bormand 03.03.2018 22:36 # +1
vistefan 03.03.2018 22:37 # 0
bormand 03.03.2018 22:42 # 0
vistefan 03.03.2018 22:44 # 0
bormand 03.03.2018 23:22 # +3
https://yadi.sk/i/Nm8TE3bh3SybbR
https://yadi.sk/i/ze8iFb3u3SybbZ
Ну и пара старых фоточек оттуда же:
https://yadi.sk/i/a_Ukl3tIrFTzw
https://yadi.sk/i/NwQI8AEYrFU3T
З.Ы. А по юзабилити — там, к примеру, в редакторе автодополнения нету.
vistefan 04.03.2018 01:25 # 0
bormand 04.03.2018 07:03 # 0
SemaReal 04.03.2018 01:38 # 0
не знал что тебя так зовут
cykablyad 03.03.2018 23:00 # +1
bormand 03.03.2018 23:01 # 0
bormand 03.03.2018 10:50 # +2
Вот ленивая жопа. Нет бы отдельную кнопку сделать.
g0_1494034731324 03.03.2018 11:02 # 0
syoma 03.03.2018 11:56 # −1
Не делай так больше никогда. Есть же for... of
vistefan 03.03.2018 12:51 # −1
roman-kashitsyn 03.03.2018 13:05 # 0
vistefan 03.03.2018 13:17 # 0
syoma 03.03.2018 22:53 # 0
SemaReal 04.03.2018 01:39 # 0
1024-- 04.03.2018 12:08 # 0
g0_1494034731324 04.03.2018 14:22 # −1
Меня шмонай ты, вертухай,
Да загляни под юбочку,
Да посмотри на булочки.
Понюхай попку носиком,
Прикинься, киса, пёсиком,
Вот в этом вся и разница,
Кто хочет, а кто дразнится.
©Любимая группа мамки админа
syoma 03.03.2018 14:20 # 0
Интересно, а по-другому можно?
vistefan 03.03.2018 14:30 # 0
syoma 03.03.2018 14:31 # 0
1024-- 03.03.2018 21:35 # 0
Vindicar разработал хак для ГК. Кажется, для подгрузки комментов в стоке.
В jQuery есть live/delegate/on-питушня, которая умеет заранее описать элементы, на которые навесится обработчик события, когда они будут созданы - надо почитать исходники (что-то в исходниках слишком много делегирования действий другим функция, надо IDE открывать, чтоб уследить за мыслью) или статьи.
В юзерскриптах и расширениях (по крайней мере в хромных) можно указать стадию, на которой скрипт начнёт работать.
vistefan 03.03.2018 21:43 # 0
А каковы нынче IDE для JS?
cykablyad 03.03.2018 21:44 # +2
vistefan 03.03.2018 21:46 # 0
Чувак, ты реально крэйзи.
1024-- 03.03.2018 21:49 # 0
vistefan 03.03.2018 21:52 # 0
IDE — это как минимум однозначный правильный go to definition по проекту и дебаг.
subaru 03.03.2018 21:57 # −1
1024-- 03.03.2018 22:21 # 0
> однозначный правильный go to definition
Вероятно, для такого плагины есть. Хотя, в динамическом питухе эта штука должна как лампа накаливания на большую часть мощности греться, а на меньшую - выдавать что-то полезное.
> дебаг
console.log поприятнее будет; особенно - для асинхронной питушни, где легче распечатать всё, что нужно, чем через события прыгать.
В браузерах есть отличные гуёвые отладчики. У node.js есть мощный прыщgdb-подобный отладчик.
vistefan 03.03.2018 22:29 # +1
Ну правильно, я просто хотел узнать, о чем ты подумал, когда сказал
> надо IDE открывать, чтоб уследить за мыслью
1024-- 03.03.2018 22:41 # 0
> я просто хотел узнать, о чем ты подумал
Да, я действительно об IDE, где есть прыжки, подумал. Хотя, там код какой-то абстрактный сильно, проще нагуглить статью на хабре и почитать.
syoma 03.03.2018 22:51 # 0
1024-- 03.03.2018 21:47 # 0
cykablyad 03.03.2018 21:48 # +1
1024-- 03.03.2018 21:49 # 0
cykablyad 03.03.2018 21:50 # 0
Шланг (тоже встроенный в студию) вроде тоже умеет, и даже отлаживать
SemaReal 04.03.2018 01:11 # 0
Но язык настолько динамичный, что кодинсайт для него крайне плохой
syoma 03.03.2018 22:52 # +2
1024-- 03.03.2018 23:24 # +1
В документации к Greasemonkey в разделе про @run-at document-start пишут "To detect if you are running at document-start time, check the value of document.readyState".
Т.е. на этапе document-start страница только начала грузиться, но document уже есть, и за ним можно следить. В теории, должно работать.