您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Replaces the word "force" with "horse".
// ==UserScript== // @name s/force/horse/g // @version 3.2.1 // @description Replaces the word "force" with "horse". // @match *://*/* // @license License In Three Lines // @namespace https://greasyfork.org/users/5442 // ==/UserScript== // Copyright 2014 Stuart P. Bentley. // This work may be used freely as long as this notice is included. // The work is provided "as is" without warranty, express or implied. // The pattern to match var force_pattern = /(f)(or)(c)(e)/ig; // which letters in "force" get replaced with which in "horse" var horse_subs = { 'f': 'h', 'F': 'H', 'c': 's', 'C': 'S' }; // construct "horse" replacement for "force" components function replacement_horse(match,f,or,c,e) { return horse_subs[f] + or + horse_subs[c] + e; } // Transform all instances of "force" in a string into "horse" function horsify(str) { return str.replace(force_pattern, replacement_horse); } // Flag to signal that we're replacing text, so that change doesn't trigger // another replacement (technically, that can't happen if all the instances // of "force" that would trigger a replacement have been replaced with // "horse", but it's still good practice) var replacingContent = false; function replaceTextContent(node) { if (~node.textContent.search(force_pattern)) { // Flag that content is being replaced so the event it generates // won't trigger another replacement replacingContent = true; node.textContent = horsify(node.textContent); replacingContent = false; } } function changeTextNodes(node) { var length, childNodes; // If this is a text node, attempt substitutions on it if (node.nodeName == '#text') { replaceTextContent(node); // If this is an ordinary content node, recurse any children // ("ordinary" here means a node where text content doesn't have meaning // beyond human text - <style> and <script> are the only nodes of this type // that I know of) } else if (node.nodeName.toLowerCase() != 'style' && node.nodeName.toLowerCase() != 'script') { childNodes = node.childNodes; length = childNodes.length; for (var i = 0; i < length; ++i) { changeTextNodes(childNodes[i]); } } } function insertion_listener(event) { //change any new text nodes in a node that is added to the body changeTextNodes(event.target); } function cdm_listener(event) { //avoid infinite loop by ignoring events triggered by replacement if (!replacingContent) { replaceTextContent(event.target); } } changeTextNodes(document.body); document.title = horsify(document.title); document.body.addEventListener( 'DOMNodeInserted', insertion_listener, false); document.body.addEventListener( 'DOMCharacterDataModified', cdm_listener, false);