1
我有一個關於在我的Chrome擴展中的JavaScript的小問題。我的彈出窗口包含用於從一個大網站搜索書籍的小表單。 所以當我搜索書名時,它應該顯示加載微調,發送xhr請求到圖書API,刪除微調,在新標籤中打開options.html並顯示結果。它的工作原理,但只是有時。 那麼你有什麼建議?鉻onMessage.addListener有時只執行
popup.js
// var books includes JSON array of fetched books
hrome.tabs.create({url: "options.html"}, function(tab){
chrome.tabs.sendMessage(tab.id, {booksList: books});
});
而且options.js
chrome.extension.onMessage.addListener(function(request, sender, sendResponse) {
alert("OK");
});
,但確定只顯示有時...爲什麼?
我相信domready中有時運行爲時已晚。將'chrome.extension.onRequest'移動到'$()。ready'外部,或使用查詢字符串或URL片段將數據從彈出窗口傳遞到選項頁面。這種方法的一個優點是用戶也能夠通過修改URL和/或書籤查詢來改變查詢。 – 2012-08-08 12:53:12
在ready函數外部移動監聽器是個好主意,但我想同時使用DOM進行操作。那麼該怎麼做呢? – Droidik 2012-08-08 13:16:54
您可以將事件偵聽器中的邏輯移動到另一個函數,然後使用布爾標誌和domready事件在正確的時間調用該函數。你有沒有考慮過我的其他建議?這看起來更貼心我。 – 2012-08-08 14:23:15