Я создаю расширение Chrome, и мне нужно установить двустороннюю связь между injected.js
и content_script.js
.У меня есть разрешение на использование tabs
в manifest.json
.Для начала я попытался сделать сообщение от injected
до content_script
.Я использую это:
// Content script
window.addEventListener("getChromeData", function(data) {
console.log( data ) // CustomEvent {isTrusted: false, detail: null, type: "getChromeData", target: Window, currentTarget: Window, …}
}, false);
// Injected script
window.dispatchEvent(new CustomEvent("getChromeData", {data: 'whatever'}));
Проблема в том, что у меня есть ответ в скрипте контента, но не тот data
объект, который я отправляю с injected
.Я получил только CustomEvent
объект без этих данных.
Может ли кто-нибудь провести меня через это, что я должен сделать, чтобы получить одностороннее сообщение и, возможно, двустороннее, от content_script
до injected
?
Редактировать:
После предложения отредактировать data
в detail
свойство, вот что у меня есть
// Injected script
window.dispatchEvent(new CustomEvent("getChromeData", {detail: {
first: 're',
two: 'two'
}}));
// Content script
window.addEventListener("getChromeData", function(data) {
console.log( data ) // Still getting CustomEvent {isTrusted: false, detail: null, type: "getChromeData", target: Window, currentTarget: Window, …}
}, false);
Я скомпилировал, перезагрузил расширение и перезагрузил страницу.Тем не менее, мой возвращаемый объект имеет detail
, который указывает на значение null
.