您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
add unread mark for **visited** post of v2ex.com
当前为
// ==UserScript== // @name v2ex unread // @name:zh-CN v2ex 标记未读 新回复 // @namespace https://github.com/axipo/v2exUnread // @version 0.3 // @description add unread mark for **visited** post of v2ex.com // @description:zh-CN 给v2ex增加未读标记的油猴脚本 // @author axipo // @match https://*.v2ex.com/* // @grant none // ==/UserScript== (function() { 'use strict'; if(location.pathname === '/' || location.pathname === '/my/topics'){ // read visit log let containers = document.querySelectorAll("#Main .topic_info"); containers = Array.prototype.slice.apply(containers); let links = document.querySelectorAll("#Main .topic-link"); links = Array.prototype.slice.apply(links); let replies = links.map(link => /#reply(\d+)/.exec(link.href)[1]); let postIds = links.map(link => /\/t\/([0-9]+)/.exec(link.href)[1]); containers.forEach((container, index) => { if(!replies[index]){ return } let oldReply = localStorage.getItem('post' + postIds[index]) oldReply = parseInt(oldReply ? oldReply : 0) if(!oldReply){ return } let recentReply = replies[index] - oldReply if(!recentReply){ return } let span = document.createElement('span') span.innerText = recentReply + ' new' span.style = ` margin: 0 0.5rem; color: white; background-color: #f56c6c; padding: 0px 6px; border-radius: 6px / 50%; font-weight: bold; ` container.appendChild(span) }) return } var regRes = /\/t\/([0-9]+)$/.exec(location.pathname); if(regRes){ let postId = regRes[1] let text = document.querySelector("#Main > .box:nth-child(4) > .cell:nth-child(1)").innerText; let recentReply = /(\d+) 条回复/.exec(text)[1]; localStorage.setItem('post' + postId, recentReply); } })();