您需要先安装一个扩展,例如 篡改猴、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';
- });
- })();