Javascript替换在Google.com中不起作用

时间:2015-06-26 23:36:51

标签: javascript google-chrome-extension

我有一个扩展名,用于替换页面上的文字。它适用于谷歌的每个站点。在初始页面加载它不起作用。当我刷新页面时,有时候它会工作,但有时它不会。如果我点击谷歌的链接,然后返回它加载正常。它在每个其他页面中都能正常工作(至少到目前为止我测试过的每一页都是如此)。

有谁知道为什么以下代码会导致此问题,并知道如何解决它?这取自我的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
    }
});

0 个答案:

没有答案