Chrome扩展词替换

时间:2016-06-01 18:47:49

标签: google-chrome-extension

我正在尝试为Google Chrome做一个简单的扩展,但我认为我有一些错误。此扩展名替换其他单词。有些用户有类似的问题,但我找不到问题的解决方案:$

这是html

overflow

这是js

  <button id="iniciar">Cambiar</button>
  <script type="text/javascript" src=cambiar.js></script>

这个json

document.addEventListener('DOMContentLoaded', function () {
    "use strict";
    var palabra = document.getElementById('iniciar');

    palabra.addEventListener("click", function () {

        document.body.innerHTML = document.body.innerHTML.replace(new RegExp("1", 'g'), "2");

    });
});

2 个答案:

答案 0 :(得分:0)

您的代码的整个概念是错误的。您似乎还不了解基础知识。我建议您在进一步尝试前阅读architecture of Chrome extensions

代码中的错误:

  1. Content scripts are executed on the page that they are injected into。这意味着您正在尝试将您的函数连接到目标页面上的"iniciar"元素,而不是弹出窗口。

  2. 您的内容脚本无法连接到您的弹出页面。它会在每个匹配的页面上自动注入。如果要从弹出窗口触发内容脚本注入,则需要使用programmatic injection

  3. 在创建DOM之后注入带有"run_at": "document_end"的内容脚本。这意味着您的DOMContentLoaded听众永远不会开火。

答案 1 :(得分:0)

谢谢,现在扩展工作了。

HTML

 <button id="iniciar">Cambiar</button>
 <script type="text/javascript" src="cambiar.js"></script>

JS

document.addEventListener('DOMContentLoaded', function() {
  var detectado = document.getElementById('iniciar');
        detectado.addEventListener('click', function() {   
        chrome.tabs.executeScript(null, {code: "document.body.innerHTML = document.body.innerHTML.replace(new RegExp('1' , 'g'), '2');"});    

    });
});

JSON

  "permissions": [
        "tabs",
        "<all_urls>"
    ]
    , "browser_action": {
        "default_icon": "flag.png"
        , "default_title": "Relaxing cup of café con leche"
        , "default_popup": "popup.html"
    },
   "content_scripts": [
        {
            "matches": [
                "<all_urls>"
            ],
            "js": ["cambiar.js"]
        }
    ]