2012-08-28 28 views
2

我需要創建一個包含兩個按鈕的擴展:複製和粘貼。 複製按鈕將選擇頁面上的文本輸入和textareas的內容並將其保存在存儲模塊中。 「粘貼」按鈕會將保存的文本粘貼到具有相同ID的輸入和文本區域內的另一個頁面上。保存輸入字段Chrome擴展程序

我設法使用本地sotrage使其工作,但它只保存在同一個域的內容。我試圖使用chrome.storage模塊來存儲和檢索數據;我無法實現它的功能。

你能告訴我這個問題最好的辦法是什麼?

更新: 的擴建工程,但有一個小麻煩:

chrome.extension.onMessage.addListener(
    function(request, sender, sendResponse) {  
     storage.get('form_data', function(item) { 
      sendResponse(item); 
     }); 
    } 
}); 

這將返回一個錯誤:無法發送迴應:chrome.extension.onMessage監聽器必須返回true,如果你想在偵聽器返回後發送響應。

var form_data; 
chrome.extension.onMessage.addListener(
    function(request, sender, sendResponse) {  
     storage.get('form_data', function(item) { 
      form_data = item; 
     }); 
     sendResponse(form_data); 
    } 
}); 

這工作,但我必須調用函數兩次(點擊粘貼按鈕),我猜第一個返回undefined並得到數據之後和第二調用返回的存儲值。

+0

從內容腳本中使用背景頁面,並通過郵件使用'chrome.storage'。 –

+0

您能舉例說明傳遞消息並選擇頁面上的表單嗎? – Sebastian

+0

閱讀http://developer.chrome.com/extensions/messaging.html和http://developer.chrome.com/extensions/content_scripts.html。當你被困時回來。 –

回答

0

我解決了這個問題,用下面的代碼:

chrome.extension.onMessage.addListener(
    function(request, sender, sendResponse) { 
    if (request['request_type'] === 'copy') { 
     storage.clear(); 
     storage.set({'form_data' : request['form_data']}); 
    } else if (request['request_type'] === 'paste') { 
     storage.get('form_data', function(item) { 
      chrome.tabs.getSelected(null, function(tab) { 
      chrome.tabs.sendMessage(tab.id, item['form_data']); 
      }); 
     }); 
     } 
});