Google chrome extension 您可以在后台脚本中执行哪些操作';在其他js文件中做不到?

Google chrome extension 您可以在后台脚本中执行哪些操作';在其他js文件中做不到?,google-chrome-extension,Google Chrome Extension,*对于其他js文件,我指的是popup.html中包含的文件。 下面的代码可以工作,那么我为什么要使用背景脚本呢 内容脚本 popup.html中包含的脚本 这 只要Chrome浏览器处于活动状态,就可以继续使用(如果设置了权限,甚至可以延长使用时间)。仅当徽章的弹出窗口打开时,弹出页面才处于活动状态。弹出窗口只能由用户打开 背景页面的文档永远不可见,而弹出页面在单击徽章按钮时变为可见 除此之外,背景页面和弹出页面之间没有区别。它们在同一扩展的进程中运行,并且可以访问同一组API。 如果您的扩

*对于其他js文件,我指的是popup.html中包含的文件。 下面的代码可以工作,那么我为什么要使用背景脚本呢

内容脚本 popup.html中包含的脚本 这

  • 只要Chrome浏览器处于活动状态,就可以继续使用(如果设置了权限,甚至可以延长使用时间)。仅当徽章的弹出窗口打开时,弹出页面才处于活动状态。弹出窗口只能由用户打开
  • 背景页面的文档永远不可见,而弹出页面在单击徽章按钮时变为可见
除此之外,背景页面和弹出页面之间没有区别。它们在同一扩展的进程中运行,并且可以访问同一组API。

如果您的扩展只需要在弹出窗口处于活动状态时激活,则不需要背景页。要保存弹出窗口的状态,只需使用同步或异步API。当您使用的变量太复杂,无法使用任何一种API存储时,背景页面可能会很有用

使用背景页是有益的一个例子:
设想一个从服务器下载巨大文本文件的扩展。资源的创建对于服务器来说是非常占用资源的。从技术上讲,一切都可以在弹出窗口中完成。但是,将任务卸载到后台页面允许用户在下载文件时执行其他任务(如果仅使用弹出窗口,则当用户关闭弹出窗口时,下载将停止)


虽然你没有问,但我想让你知道。它们类似于后台页面,但有一个区别:当扩展空闲时,事件页面会自动关闭。换句话说,事件页面仅处于活动状态!通过这样做,您的扩展将受益于后台页面的优势,而不会不必要地浪费用户的内存

我的最后一个示例也是必须使用事件页面的完美示例。除了代表弹出窗口执行http请求外,后台页面什么也不做。如果您使用事件页面而不是背景页面,您将获得两个方面的最佳效果:弹出页面可以在不中断下载的情况下关闭,并且扩展不会浪费内存

文档
  • 了解更多关于和
  • 此答案中的“弹出”是指或API的可选面板,通过在清单文件中声明
    “default\u Popup”
    键来设置,或通过编程方式使用
    setPopup
    方法来设置

非常感谢您的回答,Rob。可以肯定的是,如果我只是想将用户突出显示的文本从选项卡发送到扩展,这可能是由于使用“弹出脚本”而不是后台脚本造成的问题。(对不起我的英语)@JMaylin如果您想在打开弹出窗口之前获得文本选择,则需要一个背景/事件页面。如果在打开弹出窗口(例如通过)后足以获得选择,则不需要bg/事件页面。
chrome.extension.onMessage.addListener(
  function(request, sender, sendResponse) {
  //Some code
  }
);
chrome.tabs.query({active:true,windowId: chrome.windows.WINDOW_ID_CURRENT},
  function(tab) {
    chrome.tabs.sendMessage(tab[0].id, {method: "someMethod"},
    function(response){
      //Some code
    });
  });