gpt4 book ai didi

javascript - 从工具栏运行内容脚本

转载 作者:行者123 更新时间:2023-12-02 18:07:48 24 4
gpt4 key购买 nike

我想要一个 Chrome 扩展程序来替换页面上的文本。我已经让所有代码都在 Javascript 方面工作,并且在页面加载时它运行得很好,问题是我只希望它在您单击工具栏上的按钮时替换页面上的文本。

我在工具栏上设置了一个按钮,但替换的 Javascript 仍然只是在页面加载时运行,而不是在您单击按钮时运行。另外,当您单击工具栏按钮时,尽管它没有执行任何操作,但它仍然会显示一个弹出窗口。我想要它做的就是在单击工具栏按钮时运行文本替换代码,而不显示 popup.html 框。

目前代码如下,

Manifest.json

{
"name": "Browser Action",
"version": "0.0.1",
"manifest_version": 2,
"description": "Show how options page works",
// Needed to retrieve options from content script
"background": "background.html",

// This is how you load Browser Action. Nearly equal to Page one.
"browser_action": {
"default_icon": "icon.png",
"popup": "popup.html"
},
"content_scripts": [
{
"matches": ["http://*/*", "https://*/*"],
"js" : ["popup.js"]
}
]
}

popup.js

function htmlreplace(a, b, element) {    
if (!element) element = document.body;
var nodes = element.childNodes;
for (var n=0; n<nodes.length; n++) {
if (nodes[n].nodeType == Node.TEXT_NODE) {
var r = new RegExp(a, 'gi');
nodes[n].textContent = nodes[n].textContent.replace(r, b);
} else {
htmlreplace(a, b, nodes[n]);
}
}
}

htmlreplace('a', 'IT WORKS!!!');

popup.html - 空白

背景.html

chrome.browserAction.onClicked.addListener(function(tab) {
chrome.tabs.executeScript(null, {file: "popup.js"});
});

最佳答案

必须进行一些更改(rsanchez 提到了其中大部分 - 但不是全部),还有一些可以/应该进行的更改。

因此,我将演示一个可以完成您想要的操作的示例扩展,而不是列出可以/应该/必须更改的内容。

<小时/>

要事第一 - 有关与您的疑问/问题相关的几个关键概念的更多信息:

<小时/>

扩展目录结构:

          extension-root-directory/
|_____manifest.json
|_____background.js
|_____content.js

ma​​nifest.json:

{
"manifest_version": 2,
"name": "Test Extension",
"version": "0.0",
"offline_enabled": true,

"background": {
"persistent": false,
"scripts": ["./bg/background.js"]
},

"browser_action": {
"default_title": "Test Extension"
//"default_icon": {
// "19": "img/icon19.png",
// "38": "img/icon38.png"
//},
},

"permissions": [
"activeTab"
]
}

背景.js:

chrome.browserAction.onClicked.addListener(function(tab) {
chrome.tabs.executeScript(tab.id, { file: "content.js" });
});

content.js:

function htmlReplace(a, b, element) {
if (!element) {
element = document.body;
}

var r = new RegExp(a, "gi");
var nodes = element.childNodes;
for (var n = 0; n < nodes.length; n++) {
if (nodes[n].nodeType == Node.TEXT_NODE) {
nodes[n].textContent = nodes[n].textContent.replace(r, b);
} else {
htmlReplace(a, b, nodes[n]);
}
}
}
htmlReplace("a", "IT WORKS !!!");

关于javascript - 从工具栏运行内容脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19951797/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com