使用chrome.tabs.executeScript
,如何在插入的内容脚本中使用background.js中的变量?我的意思是这样的:
(...)
var identificador = target.selectionText;
chrome.tabs.executeScript(null,
{code:"alert(identificador);"});
(...)
这只是我需要做的一个发明的例子。在我的扩展中,我的目标是设置一个变量,选择一部分文本(使用上下文菜单),当重新加载Web时,在文档中搜索它,如果找到匹配项,请提醒我。我知道这样做的唯一方法是使用正则表达式和document.body.innerText
,但我相信我只能使用document.body.innerText
使用executeScript
注入JS。那么...有没有更好的方法呢?如果没有,我如何将带有文本部分的变量发送到executeScript
执行的代码?
答案 0 :(得分:3)
将信息从后台页面(background.js)传递到正在查看的网页的最佳方式是使用Content Scripts和Message Passing的组合。
内容脚本允许您将JS文件添加到网页。这将用于从background.js接收消息并在网页DOM上执行操作。
Message Passing为您提供了一种通过在后台页面和网页之间传递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。