我已經查看了這個問題/答案,以及: Communicating between Chrome DevTools and content script in extensionchrome.runtime.connect無法連接
看起來他們正在做的事情略有不同,我試圖做的,所以我不知道它適用多少。也許我絕對需要一個background.js文件?
我還審查了這個問題: extension using background, content and devtools together
這看起來他們使用的不是作爲記錄在這裏(這是我所需要的)長期連接: https://developer.chrome.com/extensions/messaging#connect
不管怎樣,前面的問題除了這裏是我的問題:
我已經嘗試了幾個小時的跨度幾個方法,所以我很確信我只是想在這裏做一些工作。
我的問題的關鍵是:
chrome.runtime.onConnect.addListener(function(){...})
這裏的聽衆將永遠不會觸發。
這裏是我的設置:
我的擴展使用一個內容腳本和DevTools頁。從這兩個地方,內容腳本和DevTools頁面,我都嘗試通過chrome.runtime啓用消息傳遞。我的樣板初始化看起來是這樣開始的連接:
console.log('initializing connection');
var port = chrome.runtime.connect({name: 'My Extension'});
console.log('port', port.name);
這等待的onConnect:
chrome.runtime.onConnect.addListener(function(port){
console.log('got connection!!!!!!');
});
我調用onConnect處理將永遠不會被調用。我嘗試將連接代碼(chrome.runtime.connect({...})
)放入內容腳本和DevTools頁面JS中,同時將處理程序初始化置於相反的位置而無濟於事。
換句話說,如果我將連接代碼放在內容腳本中,我會將處理程序初始化放到DevTools頁面JS中。如果我將連接代碼放入DevTools頁面JS,我會將處理程序初始化放入內容腳本中。
在這兩種情況下,我都沒有收到運行時錯誤,但是,我也從來沒有看到console.log('got connection!!!!!!');
被調用。是的,當我在DevTools頁面JS中擁有處理程序初始化時,我正在查看DevTools頁面控制檯。
我只是在誤解某些東西或缺少文檔中的某些東西。任何人都可以用正確的方向指出我的觀點:DevTools Page JS與內容腳本進行通信?
有大量的bug在DevTools擴展消息。您應該嘗試將背景用作代理,並僅從DevTools啓動連接。 – Xan 2014-09-23 17:49:31