有什么方法可以在popup.html(或popup.js)和后台脚本之间传递信息吗?
我希望弹出窗口显示用户帐户中的信息或允许他们登录,但是让background.js处理身份验证和其他逻辑。我在 list 中声明了background.js,但似乎没有迹象表明它已被使用。
编辑:如果我要解决所有这些错误,并且有更好的方法可以做到这一点,那就太好了。
最佳答案
请注意,后台页面和弹出窗口位于同一进程(扩展进程)中,因此一个页面可以获取另一页面的DOM窗口,然后直接调用函数或设置变量。例如,弹出窗口可以调用chrome.extension.getBackgroundPage来修改背景:
chrome.extension.getBackgroundPage().variable = 42;
后台页面可以调用chrome.extension.getViews来获取弹出窗口:
var popups = chrome.extension.getViews({type: "popup"});
if (0 < popups.length)
popups[0].variable = 42;
设置共享变量的另一种方法是使用传统的DOM API,因为每个扩展名都有一个虚假的来源(例如“eakjnniffhfegdpfehmnpcmjiameincp”)。因此,当您在后台修改
localStorage
,document.cookie
或IndexedDB时,可以在弹出窗口中将其读回。也就是说,即使在扩展过程中的页面内,您仍可能仍希望使用消息传递API,因为这可能会使您的代码更加统一。消息传递是与内容脚本进行通信的唯一方法。
关于google-chrome-extension - 如何从弹出窗口与background.js进行交互?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9537435/