gpt4 book ai didi

javascript - 在 chrome.tabs.executeScript 中使用 background.js 变量

转载 作者:行者123 更新时间:2023-11-28 20:30:36 24 4
gpt4 key购买 nike

使用chrome.tabs.executeScript,如何在插入的内容脚本中使用background.js 中的变量?我的意思是这样的:

(...)
var identificador = target.selectionText;
chrome.tabs.executeScript(null,
{code:"alert(identificador);"});
(...)

这只是我需要做的一个例子。在我的扩展中,我的目标是设置一个变量,其中选择一部分文本(使用上下文菜单),当重新加载网络时,在文档中搜索它,如果找到匹配项,请提醒我。我知道做到这一点的唯一方法是使用正则表达式和 document.body.innerText ,但我相信我只能使用 document.body.innerText 注入(inject) JS 和 执行脚本。那么...还有更好的方法吗?如果没有,我如何将带有文本部分的变量发送到 executeScript 执行的代码?

最佳答案

将信息从后台页面 (background.js) 传递到正在查看的网页的最佳方法是使用 Content Scripts 的组合。和 Message Passing .

内容脚本允许您将 JS 文件添加到网页。这将用于接收来自background.js的消息并在网页DOM上执行操作。

消息传递为您提供了一种通过传递 JSON 对象在后台页面和网页之间进行通信的机制。

添加内容脚本的示例:

{
"name": "My extension",
"permissions": [
"tabs"
],
"content_scripts": [{
"js": ["myscript.js"]
}]
}

background.js 的示例内容:

// Get the current tab and send a message from it:
chrome.tabs.getSelected(null, function(tab) {
chrome.tabs.sendMessage(tab.id, {
identificador: target.selectionText
});
});

myscript.js 的示例内容:

// Listen to the message
chrome.runtime.onMessage.addListener(function(request, sender, sendResponse) {
console.log(request.identificador);
});

请注意,Google 现在建议您使用 Event Pages而不是Background Pages .

关于javascript - 在 chrome.tabs.executeScript 中使用 background.js 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16500393/

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