Mój skrypt zawartości wysyła wiadomość do pliku background.js. W procedurze obsługi wywołania zwrotnego miałem ostatnią linię jako "alert(alrt_msg)"
. Po wykonaniu kodu, pojawia się okno alertu, ale po kliknięciu „OK”, na wyświetlaczu konsoli chrom idąc czerwony:Błąd wyrzucania przez rozszerzenie Chrome w konsoli
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)
Jego nie wiele pouczające ale intuicyjnie wiedziałem, że to błąd, ponieważ niektóre struktury gdzieś jest śmieci zbierane, gdy użytkownik kliknie "OK". Włożyłem więc mój kod jako
window.setTimeout(function() { alert(alrt_msg); } , 1);
Pozwoliło to działa bez powyższego błędu. Mimo to, po wyszukaniu dokumentacji lub google, nie byłem w stanie znaleźć dokładnego powodu tego. Czy ktoś może wyjaśnić, co się dzieje i czy dokumentacja zawiera konkretny sposób, aby to zrobić?
Jaki jest twój kod? Co jeśli wstawisz 'return true;' na końcu detektora zdarzeń 'onMessage'? –
Wierzę, że powodem jest to, że program obsługi odpowiedzi wiadomości nie czeka na kliknięcie alertu; więc po zamknięciu alarmu, aby umożliwić kontynuowanie skryptu, program obsługi już nie istnieje. Nie jestem pewien, czy można to uznać za błąd. – Goodwine
@Goodwine, Wierzę, że masz rację. – Methos