您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Progressive word counter for Gutenberg HTML ebooks - adapted from https://greasyfork.org/en/scripts/35167
// ==UserScript== // @name Gutenberg Progressive Word Count // @namespace https://vox.quartertone.net // @version 1.0.1 // @description Progressive word counter for Gutenberg HTML ebooks - adapted from https://greasyfork.org/en/scripts/35167 // @author Quartertone // @grant none // @match *://*.gutenberg.org/files/* // @match *://*.gutenberg.org/cache/epub/* // @license gpl-3.0 // ==/UserScript== (function() { 'use strict'; var targetcount = 2000; function gettargetcount() { targetcount = prompt("Please enter the target number of words to count", targetcount); return targetcount ? targetcount : 0; } function clearAll() { for (const pp of document.querySelectorAll("p.wcpg")) { pp.style.border = ""; pp.classList.remove("wcpg"); } for (const para of document.querySelectorAll("span.wcpg")) { para.remove(); } } function scrollGo(o) { o.scrollIntoView() window.scrollBy(0, 500); } function mycounttotarget(startp, wctarget) { var txt = '', pcount = 0, count = 0, prevpara = null, n = 0; // FIX - remove n ? while (startp && (count < wctarget) && (n < 1000)) { startp.classList.add("wcpg"); startp.style.border = "1px solid #f00"; txt = startp.textContent; pcount = txt.trim().split(/--|[\s\*—]+/).length; count += pcount; // showParaCount(startp, count, pcount); let wcpg = document.createElement("span"); wcpg.className = "wcpg"; wcpg.style = 'background:#ff07'; wcpg.innerHTML = "(paragraph " + pcount.toString() + " words, running total " + count.toString() + " words"; startp.appendChild(wcpg); prevpara = startp; startp = startp.nextElementSibling; if (startp && startp.tagName.match(/^(h\d|pre|div)/i)) { startp = null; } n++; } scrollGo(startp || prevpara); } document.addEventListener("click", function(e) { if (e.target.tagName == "P") { clearAll(); mycounttotarget(e.target, gettargetcount()); } }); alert("click the paragraph where you want to start the count!"); })();