Содержимое Chrome Extensions вызывает обратный вызов для фона, но параметр не определен

1

Я пытаюсь настроить фоновый скрипт, получая данные из контента периодически и записывая его в файл (вид соскабливания веб-страницы)

К сожалению, я застрял в самом начале:

Фон отправляет сообщение в контент и вызывается обратный вызов, но параметр не передается правильно, он "не определен", что я пытаюсь...

Manifest:

    {
 "manifest_version": 2,
    "name": "Test Extension",
    "version": "0.0",

        "background": {
            "persistent": false,
            "scripts": ["background.js"]
        },
        "content_scripts": [{
            "matches" : ["<all_urls>"],
            "js": ["content.js"]
        }],
        "browser_action": {
            "default_title": "Test Extension"
        },

        "permissions": ["activeTab"]
    }

content.js

chrome.runtime.onMessage.addListener(function (msg, sender, sendResponse) {
    if (msg.text === 'report_back') {
        sendResponse({data: "goodbye"});
    }
});

background.js

chrome.browserAction.onClicked.addListener(function (tab) {
chrome.tabs.sendMessage(tab.id, {text: 'report_back'}, function(response) {
            console.log(response.data);
      });
});
Теги:
google-chrome

1 ответ

0

Если вы получаете:

Ошибка в обработчике событий для (неизвестно): TypeError: не удается прочитать данные свойства "неопределенные"...

Я предполагаю, что вы нажимаете на значок расширения, когда находитесь на вкладке типа chrome://extensions

Попробуйте щелкнуть по нему с любого другого веб-сайта, и он должен работать.

  • 0
    Вы правы! Но что интересно, если сбой выдается один раз, я получаю его каждый раз независимо от того, какую вкладку я выбираю. Я должен перезапустить (или хотя бы перезагрузить расширение) Но это только первый шаг: мне действительно нужна периодическая загрузка (каждые 1-5 секунд) динамически изменяемого поля на веб-сайте. Поэтому вместо «onClick» я бы хотел использовать метод setInterval, но как мне получить tabID?
  • 0
    @WolfgangHaring Во-первых, нет необходимости перезагружать расширение, только текущая страница, на которой вы находитесь. Во-вторых, вам нужна такая же функция, когда вы нажимаете значок расширения, но вы хотите, чтобы она выполнялась всегда на каждой странице каждые 1-5 секунд? Я думаю, что ответил на ваш текущий вопрос, но если вам нужно что-то еще о расширениях Chrome, я помогу.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню