今天在阿贝云,免费云服务器上制作了油猴插件。关键字高亮。本机电脑也是可以的。
// UserScript
// @name Highlight Keywords
// @namespace http://your-namespace.com
// @version 1.0
// @description Highlight “循环于” and “如果” keywords on a webpage
// @match https://segmentfault.com/*
// @grant none
// /UserScript
(function() {
‘use strict’;
// …
// 创建一个正则表达式来匹配关键字
var keywordRegex = /(循环于|如果)/g;
// 获取页面上的所有文本节点
var textNodes = document.evaluate("//text()", document, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null);
for (var i = 0; i < textNodes.snapshotLength; i++) {
var textNode = textNodes.snapshotItem(i);
var text = textNode.nodeValue;
// 使用正则表达式搜索关键字
var matches = text.match(keywordRegex);
if (matches) {
// 创建一个包含高亮标记的新文本节点
var highlightedText = document.createElement("span");
highlightedText.className = "highlighted"; // 可以定义样式
var lastIndex = 0;
for (var j = 0; j < matches.length; j++) {
var match = matches[j];
var index = text.indexOf(match, lastIndex);
// 将匹配前的文本添加到新节点
highlightedText.appendChild(document.createTextNode(text.substring(lastIndex, index)));
// 创建一个包含关键字的高亮节点
var keywordSpan = document.createElement("span");
keywordSpan.className = "keyword"; // 可以定义样式
keywordSpan.textContent = match;
// 将高亮节点添加到新节点
highlightedText.appendChild(keywordSpan);
lastIndex = index + match.length;
}
// 将剩余的文本添加到新节点
highlightedText.appendChild(document.createTextNode(text.substring(lastIndex)));
// 用新节点替换原始文本节点
textNode.parentNode.replaceChild(highlightedText, textNode);
}
}
// 创建一个包含高亮标记的新文本节点
var highlightedText = document.createElement(“span”);
highlightedText.className = “highlighted”; // 可以定义样式
// …
// 创建一个包含关键字的高亮节点
var keywordSpan = document.createElement(“span”);
keywordSpan.className = “keyword”; // 可以定义样式
keywordSpan.style.backgroundColor = “yellow”; // 指定高亮颜色,这里是黄色背景
keywordSpan.style.color = “black”; // 指定文本颜色,这里是黑色
console.log(“脚本已激活”);
})();