您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Count repetitive words on a web page and display them with a custom threshold.
当前为
// ==UserScript== // @name Word Counter // @version 1.4 // @namespace WordCounterScript // @description Count repetitive words on a web page and display them with a custom threshold. // @license MIT // @match *://*/* // @grant none // ==/UserScript== (function() { 'use strict'; // Create and style the toggle button var toggleButton = document.createElement('button'); toggleButton.id = 'word-counter-toggle-button'; toggleButton.style.position = 'fixed'; toggleButton.style.top = '50%'; toggleButton.style.right = '20px'; toggleButton.style.transform = 'translateY(-50%)'; toggleButton.style.width = '50px'; toggleButton.style.height = '50px'; toggleButton.style.backgroundColor = 'blue'; toggleButton.style.color = 'white'; toggleButton.style.fontSize = '18px'; toggleButton.style.border = 'none'; toggleButton.innerText = 'WC'; toggleButton.setAttribute('aria-label', 'Toggle Word Counter'); document.body.appendChild(toggleButton); // Add event listener to toggle button toggleButton.addEventListener('click', function() { toggleWordCounter(); }); // Function to toggle word counter visibility function toggleWordCounter() { var wordCounter = document.getElementById('word-counter'); if (wordCounter.style.display === 'none') { wordCounter.style.display = 'block'; countWords(); } else { wordCounter.style.display = 'none'; } } // Function to count repetitive words function countWords() { let ignoredWords = ["a", "an", "the", "and", "but", "or", "for", "nor", "so", "yet", "after", "as", "at", "by", "for", "from", "in", "of", "on", "over", "to", "with", "about", "above", "below", "beneath", "under", "before", "during", "since", "within", "without", "throughout", "among", "beside", "between", "behind", "besides", "against", "along", "around", "except", "according", "across", "near", "after", "against", "ahead", "ago", "upon", "through", "into", "onto", "until", "underneath", "up", "off", "out", "of", "down", "behind", "near", "around", "between", "above", "below", "within", "without", "upon", "before", "after", "by", "behind", "near", "against", "during", "from", "for", "with", "within", "without", "on", "over", "under", "around", "throughout", "through", "at", "about", "above", "before", "behind", "beneath", "between", "beside", "beyond", "by", "down", "from", "in", "into", "near", "on", "off", "over", "under", "up", "upon", "through", "to", "with", "within", "without", "with", "via", "per", "about", "above", "across", "after", "against", "ahead", "along", "amid", "amidst", "among", "amongst", "around", "as", "at", "before", "behind", "below", "beneath", "beside", "besides", "between", "beyond", "but", "by", "despite", "down", "during", "except", "for", "from", "in", "inside", "into", "like", "near", "of", "off", "on", "onto", "out", "outside", "over", "past", "round", "since", "through", "throughout", "till", "to", "toward", "under", "underneath", "until", "unto", "up", "upon", "with", "within", "without", "yet", "a", "an", "the", "some", "any", "each", "every", "all", "both", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "ten", "first", "second", "third", "fourth", "fifth", "sixth", "seventh", "eighth", "ninth", "tenth", "last"]; // Get all words on the page let words = document.body.textContent.split(/\s+/); // Count the occurrences of each word let wordCount = {}; words.forEach(word => { let cleanedWord = word.toLowerCase().replace(/[^a-zA-Z0-9]/g, ''); if (cleanedWord && !ignoredWords.includes(cleanedWord)) { if (wordCount[cleanedWord]) { wordCount[cleanedWord]++; } else { wordCount[cleanedWord] = 1; } } }); // Filter words with counts higher than X let threshold = parseInt(prompt("Enter the threshold count:")); let repetitiveWords = Object.entries(wordCount).filter(([word, count]) => count > threshold); // Display the repetitive words and their counts let resultDiv = document.getElementById('word-counter'); resultDiv.innerHTML = `<h3>Repeated Words (Threshold: ${threshold})</h3>`; if (repetitiveWords.length === 0) { resultDiv.innerHTML += '<p>No repetitive words found.</p>'; } else { repetitiveWords.forEach(([word, count]) => { resultDiv.innerHTML += `<p>${word}: ${count} occurrences</p>`; }); } } // Create the result dialog box var wordCounterDiv = document.createElement('div'); wordCounterDiv.id = 'word-counter'; wordCounterDiv.style.display = 'none'; wordCounterDiv.style.position = 'fixed'; wordCounterDiv.style.top = '50%'; wordCounterDiv.style.left = '50%'; wordCounterDiv.style.transform = 'translate(-50%, -50%)'; wordCounterDiv.style.padding = '20px'; wordCounterDiv.style.backgroundColor = '#fff'; wordCounterDiv.style.border = '2px solid #333'; wordCounterDiv.style.borderRadius = '5px'; wordCounterDiv.style.zIndex = '9999'; document.body.appendChild(wordCounterDiv); // Create and style the close button for the result dialog var closeButton = document.createElement('button'); closeButton.innerHTML = '✖'; closeButton.style.position = 'absolute'; closeButton.style.top = '10px'; closeButton.style.right = '10px'; closeButton.style.border = 'none'; closeButton.style.background = 'none'; closeButton.style.fontSize = '18px'; closeButton.style.cursor = 'pointer'; closeButton.setAttribute('aria-label', 'Close Word Counter'); wordCounterDiv.appendChild(closeButton); // Add event listener to close button closeButton.addEventListener('click', function() { wordCounterDiv.style.display = 'none'; }); })();