- 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
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
// ==UserScript==
// @name Comment Highlighter
// @description Подсвечивает новые комментарии
// @include *://govnokod.ru/*
// @include *://www.govnokod.ru/*
// @version 2.1
// @grant none
// ==/UserScript==
(function() {
function updateState(data, lastPID, updater) {
// use `cid = 0` to enable highlighting comments in unvisited posts
// use `cid = Infinity` to disable highlighting in unvisited posts
var out, idx, pid, i = 0, cid = 0; // here
while(i < data.length) {
idx = i;
pid = data.charCodeAt(i++);
if(pid & 0x8000) {
pid &= 0x7fff;
pid <<= 16;
pid |= data.charCodeAt(i++);
}
if(pid == lastPID) {
cid = data.charCodeAt(i++) << 16 | data.charCodeAt(i++);
break;
} else {
i += 2;
}
}
data = pid == lastPID ? data.substring(0, idx) + data.substring(i) : data;
var lastCID = updater(cid);
if(isFinite(lastPID) && lastPID >= 0 && lastPID < 0x80000000) {
data += (lastPID >= 0x8000 ? String.fromCharCode(0x8000 | lastPID >> 16) : '') +
String.fromCharCode(lastPID & 0xffff) + String.fromCharCode(lastCID >> 16) +
String.fromCharCode(lastCID & 0xffff);
}
return data;
}
function commentID(comment) {
var commentLink = comment.querySelector('a.comment-link');
return Number(commentLink.href.match(/comment(\d+)$/)[1]);
}
function updateComments(prevCID) {
var comments = document.querySelectorAll('.entry-comment-wrapper');
var lastCID = prevCID;
for(var i=0; i<comments.length; ++i) {
var comment = comments[i];
var cid = commentID(comment);
if(cid <= prevCID) continue;
if(cid > lastCID) lastCID = cid;
comment.classList.add('new');
}
return lastCID;
}
var post = location.pathname.match(/^\/(\d+)/);
if(!post) return;
var PARAM = '8a9bd32e-20bc-42c7-bcdd-b65bb1fc2d0b-visited2';
var postID = +post[1];
var oldState = localStorage.getItem(PARAM) || '';
var newState = updateState(oldState, postID, updateComments);
localStorage.setItem(PARAM, newState);
})();
Битоёбство в "JS".
https://github.com/1024--/govnokod.ru-userscripts/blob/master/highlight-new.user.js
> use `cid = Infinity` to disable highlighting in unvisited posts
Не работает.
При следующем открытии все помечаются как не прочтённые.
Пофиксил так:
UPPERCASE 02.10.2018 15:02 # +1
FNCTN UPDTCMMNTS(PRVCD, HGHLGHTNVSTD = FLS) {
VR LSTCD = PRVCD;
FR (VR CMMNT F DCMNT.QRSLCTRLL(".NTR-CMMNT-WRPPR")) {
VR CD = CMMNTD(CMMNT);
F (PRVCD > CD) CNTN;
LSTCD = MTH.MX(LSTCD, CD);
F (HGHLGHTNVSTD && PRVCD)
CMMNT.CLSSLST.DD("NW");
}
RTRN LSTCD;
}
[/CD]
Perevedi_na_PHP 02.10.2018 15:14 # +1
UPPERCASE 02.10.2018 15:17 # +1
guest8 02.10.2018 15:16 # −999
guest8 02.10.2018 15:26 # −999
KRPT_DDD 03.10.2018 04:57 # +1
UPPERCASE 02.10.2018 15:37 # +1
FLS[/CD]
ПЧМ?
guest8 02.10.2018 15:57 # −999
guest8 02.10.2018 21:11 # −999
UPPERCASE 02.10.2018 21:13 # +1
guest8 02.10.2018 21:13 # −999
UPPERCASE 02.10.2018 21:15 # +1
OBEH 02.10.2018 22:23 # +1
MPA3b 03.10.2018 08:55 # +1
Perevedi_na_PHP 03.10.2018 21:49 # +1
1024-- 05.11.2018 22:18 # +1
Надо было пулл-реквест делать.
guest8 05.11.2018 22:27 # −999