chrome扩展弹出窗口和背景ajax

kha*_*han 5 google-chrome google-chrome-extension

我有一个要求,即background.html每10分钟继续更新一次,当我点击弹出窗口时,它应该触发后台立即更新并在弹出窗口中显示结果.

我有使用ajax工作的后台更新,我有弹出触发器后台使用ajax工作立即更新.但是,我被困在如何在弹出窗口中显示最新结果...如何判断后台ajax调用何时完成并在弹出窗口中显示最新结果?

谢谢

Moh*_*our 13

好吧,如果你想在背景页面上听取更改,你有两种方法可以做你想要的.

  1. 在弹出窗口中,您可以在弹出页面中注册chrome.extension.onRequest.addListener,在后台页面中,当您更新内容时,可以使用chrome.extension.sendRequest.
  2. 你可以直接访问Popup DOM,你可以从chrome.extension.getViews({type:'popup'})获得一个实例,一旦你得到它,你就可以在那个DOM中调用一个方法.从弹出窗口中,您也可以使用chrome.extension.getBackgroundPage()轻松访问背景页面.对于这两种情况,都会返回一个DOMWindow.

我个人会使用#2,因为你属于同一个扩展过程,你不需要与注入的内容脚本进行通信.

var popups = chrome.extension.getViews({type: "popup"});
if (popups.length != 0) {
  var popup = popups[0];
  popup.doSomething();
}
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助.