我有一个扩展名,用于替换页面上的文字。它适用于谷歌的每个站点。在初始页面加载它不起作用。当我刷新页面时,有时候它会工作,但有时它不会。如果我点击谷歌的链接,然后返回它加载正常。它在每个其他页面中都能正常工作(至少到目前为止我测试过的每一页都是如此)。
有谁知道为什么以下代码会导致此问题,并知道如何解决它?这取自我的background.js。我必须确保文本,而不是文本html标签被替换。
$.fn.replaceText = function (search, replace, text_only) {
return this.each(function () {
var node = this.firstChild,
val,
new_val,
remove = [];
if (node) {
do {
if (node.nodeType === 3) {
val = node.nodeValue;
new_val = val.replace(search, replace);
if (new_val !== val) {
if (!text_only && /</.test(new_val)) {
$(node).before(new_val);
remove.push(node);
} else {
node.nodeValue = new_val;
}
}
}
} while (node = node.nextSibling);
}
remove.length && $(remove).remove();
});
};
chrome.storage.local.get(function (cfg) {
//get replacedWord array
if (typeof (cfg["replacedWord"]) !== 'undefined' && cfg["replacedWord"] instanceof Array) {
var myWords = cfg["replacedWord"];
var newWords = cfg["newWords"];
for (var j = 0; j < myWords.length; ++j) {
var thisWord = new RegExp(myWords[j], "i");
$("body *").replaceText(thisWord, '<abbr title="Test Hover"><font color="red">' + newWords[j] + '</font></abbr>');
} //end for loop
}
});