我正在尝试找到一种方法,以使以下代码可以在页面加载时加载(或我猜是在之后),并自动突出显示页面上的某些单词或短语。现在,除非将其插入控制台,否则代码不会启动。我一直在测试的代码在很大程度上受过去的线程(Greasemonkey: Highlight many words in a HTML-File)的影响,并在下面列出:
// ==UserScript==
// @name Highlight Text
// @description Highlights text within HTML
// @require https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js
// @require https://gist.github.com/raw/2625891/waitForKeyElements.js
// @grant GM_addStyle
// @grant GM.getValue
// ==/UserScript==
function highlightWord(word) {
var xpath = "//text()[contains(., '" + word + "')]";
var texts = document.evaluate(xpath, document.body, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null);
for (n = 0; n < texts.snapshotLength; n++) {
var textNode = texts.snapshotItem(n);
var p = textNode.parentNode;
var a = [];
var frag = document.createDocumentFragment();
textNode.nodeValue.split(word).forEach(function(text, i) {
var node;
if (i) {
node = document.createElement('span');
node.style.backgroundColor = 'lightgreen';
node.appendChild(document.createTextNode(word));
frag.appendChild(node);
}
if (text.length) {
frag.appendChild(document.createTextNode(text));
}
return a;
});
p.replaceChild(frag, textNode);
}
}
highlightWord('sample');
例如,我想在以下页面上突出显示单词“ sample”:https://www.snapsurveys.com/survey-software/sample-surveys/
我无法获取代码以在页面加载时自动突出显示文本。我做了一些研究,我认为该页面可能受AJAX的影响,因此赠款位于顶部。现在,在页面加载时什么也没有发生,但是当我手动将代码插入页面的控制台时,它可以正常工作,并且指定的文本确实被突出显示。这似乎是一个非常简单的修复程序,但是我显然掩盖了某些东西。预先感谢!
答案 0 :(得分:-1)
我未能意识到Highlightword区分大小写,并且我还在想要的特定站点上使用了@include,现在它可以正常工作了。