我想创建一个
的扩展名我设法通过以下脚本完成第1步。
grabcomanddefinecompet.js
document.addEventListener('DOMContentLoaded', function (){
document.getElementById('btn4').addEventListener('click', injection);
});
injection = function (){
chrome.tabs.query
(
{
lastFocusedWindow: true,
url: "https://www.linkedin.com/sales/profile/*"
},
function(tabs){
for(i=0; i<tabs.length; i++)
{
chrome.tabs.executeScript(tabs[i].id, {file: "myScript2.js"})
}
}
)
}
myScript2.js
getcompanynames = function(){
chrome.runtime.sendMessage(document.getElementsByClassName('link')[0].innerHTML);
}
getcompanynames();
bg.js(这是后台脚本)
var companynames = [];
chrome.runtime.onMessage.addListener(function(response, sender, sendResponse){
companynames.push(response);
console.log(companynames)
})
正如您所看到的,现在当我点击按钮时,
现在一切都很好。但我只是不知道如何将这些公司名称放回popup.html。问题是popup.html已经加载了。 我需要Angular JS来解决这个问题吗? 另外,我的流程太复杂了吗?
谢谢!
答案 0 :(得分:0)
假设弹出页面中有btn4
(因为内容脚本中不允许chrome.tabs
),您可以将bg.js
中的所有逻辑移动到弹出页面,因为弹出页面也存在在扩展上下文中,它可以访问所有扩展api。
通常,对于弹出页面和后台页面之间的消息传递,您可以使用以下方法。
chrome.storage
,您可以在后台/弹出页面中为存储节省价值,并在弹出/后台页面中检索它。chrome.runtime.getBackgroundPage
,您可以通过此方法直接调用弹出页面中后台页面中声明的全局方法/变量。