有幾個關於此問題的問題,但都沒有滿足我的需求。我創建了一個擴展,我試圖在內容腳本和我的options.html之間進行通信。我一直在嘗試使用chrome.extension.onRequest.addListener
和chrome.extension.sendRequest
,都沒有工作。沒有命令執行或任何事情。這裏是我的代碼:在Chrome瀏覽器擴展程序中傳遞郵件
內容腳本:
chrome.extension.sendRequest({command:value}, function(response) {});
options.html
chrome.extension.onRequest.addListener(
function(request, sender, sendResponse) {
alert("in onRequest request.command = " + request.command);
decide_command(trim(request.value));
sendResponse({});
});
沒有警報被執行,沒有的功能被執行。我甚至嘗試在消息傳遞API頁面中使用示例,並沒有觸發任何警報或任何事情。我嘗試了一些不同的組合,比如將擴展ID放在sendRequest中,以確保它到達正確的位置,我已經排除了sendResponse以確保它不會太快結束。除了在內容腳本中的發送請求命令之前和之後,我都有調試警報並且沒有被觸發。所以我會認爲它要麼被執行,要麼失敗或者類似的東西。任何幫助將不勝感激,我一直在這個工作好幾天。
你有沒有試過在manifest.json中指定'options.html'作爲你的'background_page'?我不確定內容腳本是否可以與選項頁面進行通信。另外,'request.value'看起來像是未定義的。 – 2011-04-18 10:26:03
對不起,這是一個與測試有關的問題,實際上是request.command而不是request.value我改變了我的代碼中的一些變量名稱。在我的後臺頁面中也存在相同的onRequest.addListener,所以其中一個應該得到它。 (我希望) – eric 2011-04-18 15:06:05
https://code.google.com/chrome/extensions/dev/messaging.html#simple 這是我用作參考的代碼的鏈接。我甚至將代碼添加到我的頁面以查看是否有任何工作。它沒有:[ 我不知道它是否與權限或某事有關,因爲我認爲我在我的manifest.json中擁有正確的權限,但不能確定該頁面沒有指定特定的要求。 – eric 2011-04-18 15:06:46