Tập lệnh nội dung của tôi gửi thông báo tới background.js. Trong trình xử lý gọi lại để trả lời, tôi có dòng cuối cùng là "alert(alrt_msg)"
. Khi thực thi mã, tôi nhận được hộp cảnh báo, nhưng sau khi nhấp "OK", chrome console chương trình sau đây trong màu đỏ:Lỗi ném tiện ích mở rộng của Chrome trong bảng điều khiển
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)
nó không cung cấp thông tin nhiều nhưng bằng trực giác tôi biết rằng lỗi này là do một số cấu trúc ở đâu đó là rác được thu thập trong khi người dùng nhấp vào "OK". Vì vậy, tôi đưa mã của tôi như
window.setTimeout(function() { alert(alrt_msg); } , 1);
Điều này làm cho nó hoạt động mà không có lỗi trên. Tuy nhiên, sau khi tìm kiếm tài liệu hoặc google, tôi không thể tìm ra lý do chính xác đằng sau điều này. Ai đó có thể vui lòng giải thích những gì đang xảy ra và liệu tài liệu có chứa một cách cụ thể để làm điều này không?
Mã của bạn là gì? Điều gì xảy ra nếu bạn chèn 'return true;' vào cuối trình nghe sự kiện 'onMessage'? –
Tôi tin rằng lý do là người xử lý cho phản hồi của tin nhắn không chờ cảnh báo được bấm; vì vậy khi bạn đóng cảnh báo để cho phép tập lệnh tiếp tục, trình xử lý không còn ở đó nữa. Tôi không chắc chắn nếu điều này có thể được coi là một lỗi. – Goodwine
@ Goodwine, tôi tin rằng bạn là đúng. – Methos