2011-03-15 98 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