forked from sssssssl/NP-scripts
-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathmark_read.js
63 lines (54 loc) · 1.8 KB
/
mark_read.js
1
2
3
4
5
6
7
8
9
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
// ==UserScript==
// @name North-Plus MarkRead
// @namespace https://github.com/sssssssl
// @version 0.1
// @description Mark read thread.
// @author sl
// @match https://*.level-plus.net/thread.php?fid-*
// @match https://*.white-plus.net/thread.php?fid-*
// @match https://*.south-plus.net/thread.php?fid-*
// @match https://*.imoutolove.me/thread.php?fid-*
// @grant GM_setValue
// @grant GM_getValue
// ==/UserScript==
(function() {
'use strict';
const CLS_THREAD = '.tr3.t_one';
const TD_ID_PAT = /td_(\d+)/;
const KEY_VISITED_TD = 'visited_id';
const CLS_UNREAD = 'np-unread';
const NP_UNREAD_STYLE = `
<style>
.np-unread {
font-weight : bold;
}
</style>`;
let threads = document.querySelectorAll(CLS_THREAD);
let visitedThreads = GM_getValue(KEY_VISITED_TD);
if(!visitedThreads) {
visitedThreads = [];
}
document.head.insertAdjacentHTML('beforeend', NP_UNREAD_STYLE);
threads.forEach((elem) => {
let _td = elem.querySelector('td[id]');
if(_td) {
let m = TD_ID_PAT.exec(_td.id);
if(m) {
let id = parseInt(m[1]);
if(visitedThreads.indexOf(id) == -1) {
let title = _td.querySelector('h3 a');
title.classList.add(CLS_UNREAD);
_td.onclick = () => {
let idx = visitedThreads.indexOf(id);
if(idx == -1) {
visitedThreads.push(id);
GM_setValue(KEY_VISITED_TD, visitedThreads);
console.log(`${id} clicked.`);
}
};
}
}
}
});
// Your code here...
})();