更好的解决方案是使用后台脚本。我所做的是创建一个名为的文件,该文件background.html
只存储模板。然后我background.js
设置了后台脚本 ( ) 以与我的内容脚本 ( content.js
) 进行通信。内容脚本将向后台脚本发送一条消息,command
指示它需要一个模板。利用 jQuery,我可以轻松地选择模板并将其返回到我的内容脚本,然后可以将其注入页面。
这是代码(一点点):
背景.html
<div id="template-1"></div>
<div id="template-2"></div>
...
背景.js
chrome.runtime.onMessage.addListener(function(cmd, sender, sendResponse){
c = JSON.parse(cmd);
if(c.cmd == "GET_TEMPLATE"){
//respond with the template referenced by c.selector
sendResponse($(c.selector).outerHTML);
}
});
内容.js
var command = {cmd:"GET_TEMPLATE", selector:"#template-1"};
chrome.runtime.sendMessage(JSON.stringify(command), function(response) {
//and here you should get your template
console.log(response);
//you can start using jQuery like $(response) to alter it
});
这种方法对我来说完美无缺。我不仅在这里使用命令,而且现在在任何地方都使用它们,它与消息传递配合得很好。