2011-02-07 132 views
1

我正在構建一個Chrome擴展,並試圖從Twitter獲取數據,然後將其傳遞給我的內容。我遇到了很多問題。我能夠從遠程站點獲取數據,但似乎無法將其傳遞給我的內容腳本。我有一個聽衆,當我點擊圖標使用chrome.extension.onclick.addlistener(functionname);。這獲取數據。問題是一旦我得到的數據,我需要發送一個響應來自我的內容腳本的請求。所以我也打電話給chrome.extension.Onrequest.addlistener(functioname);。在我繼續嘗試弄清楚代碼有什麼問題之前,是否允許在同一頁面中爲2個獨立事件分配2個監聽器,或者您只能有一個監聽器?鉻擴展後臺頁面可以有多個監聽器嗎?

+0

我想你可以在測試這一點自己差不多的時間花了你問你的問題。 – 2011-02-07 17:10:22

回答

0

如果你#2一個快速搜索,你會看到如何從背景頁將消息發送到內容腳本代碼的例子很多: https://stackoverflow.com/search?tab=relevance&q=content%20script%20background%20page

欲瞭解更多信息,如何做到這一點,你可以按照文檔本身,他們有很好的例子: http://code.google.com/chrome/extensions/messaging.html

從文件(複製粘貼):

content_script.cs

chrome.extension.onRequest.addListener(function(request, sender, sendResponse) { 
if (request.greeting == "hello") 
    sendResponse({farewell: "goodbye"}); 
else 
    sendResponse({}); // snub them. 
}); 

background.html

chrome.tabs.getSelected(null, function(tab) { 
    chrome.tabs.sendRequest(tab.id, {greeting: "hello"}, function(response) { 
    console.log(response.farewell); 
    }); 
}); 
0

您已經創建了一個監聽onClick事件和偵聽器onRequest事件的事實是沒有問題的。您可以通過在控制檯輸入chrome.onClick和chrome.OnRequest來查看背景頁面;你會看到它們都是'chrome.Event'類型的實例。

如果您考慮一下,如果您只能創建一個偵聽器,那麼它將大大降低您編寫有用的功能的能力,因爲您只能響應{onrequest,onclick,ontabchange,onconnect,ondisconnect等之一。 }

1

我知道這是一個瘋狂的老問題,但我碰到這個傳來時遇到了相關的問題,並希望在情況下,它是對別人有用的分享。

確保你只調用sendResponse方法最多一次,如果你有多個聽衆。從文檔:

sendResponse:函數來調用(至多一次),當你有一個響應。 參數應該是任何JSON對象。如果你有一個以上 一個在同一文件中的onMessage監聽器,那麼只有一個可以發送 響應。當事件監聽器 的回報,除非你從事件​​監聽器返回true指示 要異步發送一個響應此功能失效(這將讓消息 通道開放的另一端,直到sendResponse被調用)。

相關問題