谷歌浏览器插件(在插件启动时触发事件)

5
我希望在我的Chrome扩展启动时触发一个事件。我该如何实现这一点?是否有一个事件监听器可以在扩展启动时触发?
例如:
chrome.runtime.onInstalled.addListener(function(){
        console.log('i will run once!');
});

类似这样,但不是在安装时,而是在启动时触发,它应该在扩展运行期间只触发一次,即在启动时触发。
3个回答

5
你可以在后台页面中使用onload事件,并将你想要在扩展“启动”时执行的代码放在那里。
示例(在background.js内):
window.onload = function() {
  console.log("Extension has started...");
};

以下情况下,该消息将被记录(一次):

  • 扩展程序已安装
  • Chrome浏览器已启动(并且扩展程序已启用)
  • 从禁用状态启用扩展程序

我右键单击了默认弹出页面并进行了元素检查。那不是应该console.log()的地方吗? - m1alesis
在chrome://extensions页面上有一个到“检查视图”的链接。请参见此答案:https://dev59.com/8Wkw5IYBdhLWcg3wKneb#10082021。 - berrberr
哦,我现在明白了它输出console.log()的位置。但这不是我想要的 D: 它应该做的是,一旦我启动扩展的默认弹出窗口,它应该运行函数一次。当用户关闭扩展的默认弹出窗口并再次打开时,函数应该再次运行一次,以此类推。 - m1alesis
1
这与扩展启动非常不同!我会称之为“弹出式启动”。但是,您可以重用上面的想法并将其移动到弹出文件中。只需将代码移动到弹出文件中(在<script></script>标签内,或者更好的方法是一个单独的JS文件),它将在每次打开弹出窗口时执行。 - berrberr
无论是 window.onload 还是 document.addEventListener('DOMContentLoaded', ...),它们只是 DOM 事件,在后台页面打开时才能起作用。 但它确实可以替代 chrome.runtime.onStartup 启动事件,因为浏览器在启动时会触发加载事件。 但更建议使用 onStartup,因为它更可靠。 - weiya ou
显示剩余3条评论

1

3
不幸的是,这不是我正在寻找的。我已经尝试过这个方法,但它没有起作用,我在这里找到了为什么它不起作用的答案。https://dev59.com/eGMm5IYBdhLWcg3wbug1 。我想要一个扩展程序启动时触发的事件,而不是Chrome启动时。谢谢你的帮助! - m1alesis

0
只需将任何代码放置在background.js中,扩展程序启动时它就会执行。
console.log("extension starts");

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接