2
我的Chrome擴展使用長壽命的'Port'對象來在'內容腳本'和'彈出'頁面之間傳遞消息。 'popup'能夠發送消息給'內容腳本'事件監聽器。但是,「內容腳本」中的「端口」對象無法將消息發送到「彈出」頁面。Chrome郵件傳遞錯誤:試圖使用斷開連接的端口對象
var port = chrome.extension.connect({"name":"swap"});
// listener for incoming connections
chrome.extension.onConnect.addListener(function(incomingPort){
// listener on incoming messages
incomingPort.onMessage.addListener(function(msg){
if(msg.command === 'get_scripts'){
//do work
}
var scrs = { 'scripts' : 'name' };
var result = port.postMessage(scrs);
});
});
當執行 'port.postMessage(對象OBJ)',插件引發以下錯誤,
Error in event handler for 'undefined': Attempting to use a disconnected port object Error: Attempting to use a disconnected port object
at PortImpl.postMessage (miscellaneous_bindings:54:5)
at chrome-extension://loiamkgdhfjdlkcpehnebipeinpcicfj/swap.js:27:31
at [object Object].dispatch (event_bindings:203:41)
at Object.<anonymous> (miscellaneous_bindings:250:22) event_bindings:207
我已使用 '端口' 對象和 'incomingPort' 對象嘗試,既丟同樣的'錯誤'。 感覺它與預先創建的「Port」對象的範圍有關。
插件代碼可在此git倉庫https://github.com/snambi/chrome_plugin/tree/master/src/chrome
有什麼不對這個插件?
感謝您通過代碼並顯示一種方式。我已經嘗試了'回調'的'端口'方法。請參閱https://github.com/snambi/chrome_plugin/blob/master/src/chrome/popup1.js和https://github.com/snambi/chrome_plugin/blob/master/src/chrome/swap1.js 。但是,在這種情況下,我也遇到了同樣的錯誤? – Nambi 2012-08-02 22:43:14
@Nambi您仍然通過清單文件執行內容腳本。確保你遵循我答案中的所有步驟。 – 2012-08-02 22:45:28
您的建議有效。現在該插件工作,我想使用插件彈出和內容腳本之間的正確信息。這是不好的設計?或不是鉻插件的首選設計模式? – Nambi 2012-08-02 23:48:40