2011-03-15 69 views
5

我有一个要求,其中background.html连续更新每10分钟,当我点击弹出它应该触发背景立即更新,并显示结果在弹出。铬扩展弹出和背景ajax

我有后台更新使用Ajax工作,我有弹出式触发背景,以使使用Ajax工作,以及立即更新。然而,我坚持如何在弹出窗口中显示最新结果......我如何知道背景ajax调用何时完成并在弹出窗口中显示最新结果?

感谢

回答

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(); 
} 

希望这会有所帮助。

+0

我想做chrome.extension.getViews(['popup']),但它给了我一个错误,说数组不是预期的... – khan 2011-03-16 02:09:25

+0

未捕获错误:参数1的值无效。预期'对象'阵列”。 – khan 2011-03-16 02:14:42

+0

您应该经常阅读文档,我没有编写代码:) http://code.google.com/chrome/extensions/extension.html#method-getViews我用一些代码更新了我的答案。 – 2011-03-16 02:22:18