我有一个要求,background.html 每 10 分钟持续更新一次,当我单击弹出窗口时,它应该触发后台立即更新并在弹出窗口中显示结果。
我有使用 ajax 工作的后台更新,并且我有弹出窗口触发后台以使用 ajax 工作进行立即更新。但是,我被困在如何在弹出窗口中显示最新结果...我如何判断后台 ajax 调用何时完成并在弹出窗口中显示最新结果?
thanks
好吧,如果您想监听后台页面上的更改,您有两种方法可以完成您想要的操作。
- 在您的弹出窗口中,您可以注册chrome.extension.onRequest.addListener http://code.google.com/chrome/extensions/extension.html#event-onRequest在您的弹出页面和后台页面中您可以chrome.extension.sendRequest http://code.google.com/chrome/extensions/extension.html#method-sendRequest当你得到更新的东西时。
- 您可以直接访问 Popup DOM,您可以从中获取一个实例chrome.extension.getViews({type:'popup'}) http://code.google.com/chrome/extensions/extension.html#method-getViews,一旦获得,您就可以调用该 DOM 中的方法。从弹出窗口中,您也可以轻松访问后台页面chrome.extension.getBackgroundPage() http://code.google.com/chrome/extensions/extension.html#method-getBackgroundPage。对于这两种情况,您都会返回一个 DOMWindow。
我个人会使用#2,因为您属于同一个扩展进程,您不需要与注入的内容脚本进行通信。
var popups = chrome.extension.getViews({type: "popup"});
if (popups.length != 0) {
var popup = popups[0];
popup.doSomething();
}
希望这可以帮助。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)