我的內容腳本向background.js發送消息。在響應的回調處理程序中,我有最後一行爲"alert(alrt_msg)"
。在執行的代碼,我得到的警告框,但點擊「確定」後,在紅繼鉻控制檯顯示:控制檯中的Chrome擴展程序投擲錯誤
Error in event handler for 'undefined': Cannot call method 'disconnect' of null TypeError: Cannot call method 'disconnect' of null
at chromeHidden.Port.sendMessageImpl (miscellaneous_bindings:285:14)
at chrome.Event.dispatch (event_bindings:237:41)
at Object.chromeHidden.Port.dispatchOnMessage (miscellaneous_bindings:250:22)
它沒有太多的信息,但直覺我知道這個錯誤是因爲一些結構的地方就是垃圾當用戶點擊「確定」時收集。所以我把我的代碼
window.setTimeout(function() { alert(alrt_msg); } , 1);
這使得它沒有上面的錯誤工作。儘管如此,在搜索文檔或谷歌後,我無法找到背後的確切原因。有人可以解釋發生了什麼,如果文檔包含一個特定的方法來做到這一點?
你的代碼是什麼?如果在'onMessage'事件監聽器的末尾插入'return true;'會怎麼樣? –
我相信原因是消息響應的處理程序不會等待警報被點擊;所以當你關閉警報以允許腳本繼續時,處理程序不再存在。我不確定這是否可以被視爲一個錯誤。 – Goodwine
@Goodwine,我相信你是對的。 – Methos