我正在尝试为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");
});
});
答案 0 :(得分:0)
您的代码的整个概念是错误的。您似乎还不了解基础知识。我建议您在进一步尝试前阅读architecture of Chrome extensions。
代码中的错误:
Content scripts are executed on the page that they are injected into。这意味着您正在尝试将您的函数连接到目标页面上的"iniciar"
元素,而不是弹出窗口。
您的内容脚本无法连接到您的弹出页面。它会在每个匹配的页面上自动注入。如果要从弹出窗口触发内容脚本注入,则需要使用programmatic injection。
在创建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"]
}
]