Chrome onMessage не возвращает значение - PullRequest
0 голосов
/ 06 марта 2020

Пожалуйста, помогите мне понять это. Расширение работает отлично. Никаких ошибок или чего-либо еще. Буквально ушел поесть, вернулся и побежал. ничего не работает. Получение двух ошибок:

  1. Ошибка обработки ответа: TypeError: Невозможно прочитать свойство 'a' из неопределенного: popup.js:21 (setAction)
  2. Не проверено runtime.lastError: Не удалось установить sh соединение. Получающий конец не существует.

Пытаясь устранить неполадки, я упростил свой код, чтобы попытаться понять, что происходит не так.

Вот мой код.

popup. js

document.addEventListener('DOMContentLoaded', function() {
    document.getElementById('beginSign').addEventListener('click', onBeginClick, false)
    var actionText = document.getElementById('actionText')

    function onBeginClick() {
        chrome.tabs.query({currentWindow: true, active: true},
            function (tabs){
                chrome.tabs.sendMessage(tabs[0].id, {action: "0"}, setAction)
            })
    }


    function setAction(res){
        if(res.a == 0){
            actionText.textContent = "Currently Signing!"
        }
    }
})

content. js

chrome.runtime.onMessage.addListener(
    function(request, sender, sendResponse){
        sendResponse({a: 0})
    }
)

любая помощь приветствуется.

1 Ответ

0 голосов
/ 06 марта 2020

для ошибки 1: тогда функция sendResponse callback не всегда возвращает надежное значение. так что не используйте его. используйте другой способ: в вашем popup.js:

 function onBeginClick() {
        chrome.tabs.query({currentWindow: true, active: true},
            function (tabs){
                chrome.tabs.sendMessage(tabs[0].id, {action: "0"}, null)
            })
    }
// set another event listener
chrome.runtime.onMessage.addListener(request => setAction)

function setAction(res){
        if(res.a == 0){
            actionText.textContent = "Currently Signing!"
        }
    }

в вашем content.js:

chrome.runtime.onMessage.addListener(
    function(request, sender, sendResponse){
        chrome.runtime.sendMessage({a: 0})
    }
)

для вашей ошибки 2: если вы перезагрузили расширение в chrome Страница управления расширениями, вам нужно перезагрузить открытую страницу, чтобы перезагрузить и скрипт контента.

...