Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/89.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/hadoop/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Chrome扩展以更改页面中的单词_Javascript_Jquery_Google Chrome Extension - Fatal编程技术网

Javascript Chrome扩展以更改页面中的单词

Javascript Chrome扩展以更改页面中的单词,javascript,jquery,google-chrome-extension,Javascript,Jquery,Google Chrome Extension,我正在编写一个Chrome扩展,它可以将网页中的一些单词更改为其他单词。这就是我所拥有的,我不会改变任何文字,也不会出现控制台错误 myscript.js var text = $(this).text(); var mapObj = { is:"tests", a:"AAAAAAAA", the:"testing" }; var re = new RegExp(Object.keys(mapObj).join("|"),"gi"); $(this).text(text.rep

我正在编写一个Chrome扩展,它可以将网页中的一些单词更改为其他单词。这就是我所拥有的,我不会改变任何文字,也不会出现控制台错误

myscript.js

var text = $(this).text();
var mapObj = {
   is:"tests",
   a:"AAAAAAAA",
   the:"testing"
};
var re = new RegExp(Object.keys(mapObj).join("|"),"gi");
$(this).text(text.replace(re, function(matched){
    return mapObj[matched.toLowerCase()];
}));
manifest.json

{
  "manifest_version": 2,

  "name": "example",
  "description": "bla",
  "version": "1.0",

 /* "browser_action": {
    "default_icon": "icon.png",
    "default_popup": "popup.html"
  },*/
  "content_scripts": [
    {
      "matches": ["<all_urls>"],
      "js":["js/jquery-3.1.1.js", "myscript.js"],
      "run_at": "document_end"

    }
  ],
  "permissions": [
    "activeTab",
    "<all_urls>"
  ]
}
它是有效的。 这是:

document.body.innerHTML = document.body.innerHTML.replace(new RegExp("the", "g"), "hunter");
它是有效的。因此,它显然与此有关(而不是任何其他文件或权限。正确吗?):


最后,我想循环遍历每个单词,并测试它是否需要更改,如果需要,请更改它。如果有更好的办法,请告诉我

通过这样做找到了答案:

var html = document.querySelector('html');
var walker = document.createTreeWalker(html, NodeFilter.SHOW_TEXT);
var node;


    var oneArray= ["the"];
    var twoArray= ["bob"];
    var one;
    var two;


while (node = walker.nextNode()) {
    for (i=0; i<engWords.length;i++) {

        one= new RegExp(oneArray[i],"g");
        two= twoArray[i];

        node.nodeValue = node.nodeValue.replace(one, two);

    }

}
var html=document.querySelector('html');
var walker=document.createTreeWalker(html,NodeFilter.SHOW_TEXT);
var节点;
var oneArray=[“the”];
var twoArray=[“bob”];
变量一;
var-2;
while(node=walker.nextNode()){

对于(i=0;i@IvánNokonoko好眼力,我刚才把SE问题标错了。文件的名称正确无误。请尝试更改
“权限”:[…]
使用
“权限:[“activeTab]”“
。您已经声明了
内容\u脚本>匹配项了吗?”
。希望有帮助!
相当于代码中的
窗口
对象,这不是您想要的。实际上整个代码都是错误的,因为它破坏了html结构。请查找使用createTreeWalker或document的正确示例。评估以单独处理html元素。请参阅使用TreeWalker API的正确方法:Related/近重复项:、和
var re = new RegExp(Object.keys(mapObj).join("|"),"gi");
$(this).text(text.replace(re, function(matched){
    return mapObj[matched.toLowerCase()];
}));
var html = document.querySelector('html');
var walker = document.createTreeWalker(html, NodeFilter.SHOW_TEXT);
var node;


    var oneArray= ["the"];
    var twoArray= ["bob"];
    var one;
    var two;


while (node = walker.nextNode()) {
    for (i=0; i<engWords.length;i++) {

        one= new RegExp(oneArray[i],"g");
        two= twoArray[i];

        node.nodeValue = node.nodeValue.replace(one, two);

    }

}