Хобрук: Ваш путь к мастерству в программировании

Сообщение расширения Chrome, проходящее между контентом и фоном

Я тестировал это в течение нескольких хороших часов, я также взял пример, который, как известно, работал в то время. См. здесь: https://stackoverflow.com/a/27829709/2430488

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

Код, который я использую:

manifest.json

{
    "manifest_version": 2,

    "name": "Some test",
    "description": "https://stackoverflow.com/questions/27823740",
    "version": "0",

    "background": {
        "scripts": [
            "background.js"
        ] 
    },

    "permissions": ["tabs", "<all_urls>"],

    "content_scripts": [
        {
            "matches": ["<all_urls>"],
            "js": ["cont.js"]
        }
    ]
}

cont.js

chrome.runtime.onMessage.addListener(function(msg, sender, sendResponse) {        
    if (msg.message && (msg.message == "DIMENSION")) {                          
        var dimension = getPageDiemension(document.documentElement);        
        console.log('Dimension:', dimension);
        sendResponse(dimension);       
    }
        return true;
});

getPageDiemension = function(currentDom){
    return {
        x: 0,
        y: 0,
        w: currentDom.scrollWidth,
        h: currentDom.scrollHeight
    }
}

background.js

getPageDimension = function (){
    chrome.tabs.query({active: true, highlighted: true}, function(tabs) {
        chrome.tabs.sendMessage(tabs[0].id, { message: "DIMENSION" }, function(response){
            if (response !== null) console.log('Response:', response);
            else console.log('Response is null');
        });
    }); 
    };

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

Спасибо.


  • Где ваш вызов getPageDimension в background.js? 10.10.2015
  • в cont.js var dimension = getPageDiemension(document.documentElement); в основном мне нужно передать сообщение из фонового сценария в сценарий содержимого. Если это имеет смысл... 10.10.2015

Ответы:


1

Как упоминает rsanchez, ваш фон определяет функцию getPageDimension.

Затем он никогда не вызывается, поэтому ваше расширение ничего не делает. Кажется, нет никакой ошибки, вы просто никогда ничего не делаете.

Вам нужно привязать вызов getPageDimension к какому-то событию, например. нажав Действие браузера.

10.10.2015
Новые материалы

Я собираюсь научить вас Python шаг за шагом
Привет, уважаемый энтузиаст Python! 👋 Готовы погрузиться в мир Python? Сегодня я приготовил для вас кое-что интересное, что сделает ваше путешествие более приятным, чем шарик мороженого в..

Альтернатива шаблону исходящих сообщений для архитектуры микросервисов
Познакомьтесь с двухэтапным сообщением В этой статье предлагается альтернативный шаблон для папки Исходящие : двухэтапное сообщение. Он основан не на очереди сообщений, а на..

React on Rails
Основное приложение Reverb - это всеми любимый монолит Rails. Он отлично обслуживает наш API и уровень просмотра трафика. По мере роста мы добавляли больше интерактивных элементов..

Что такое гибкие методологии разработки программного обеспечения
Что представляют собой гибкие методологии разработки программного обеспечения в 2023 году Agile-методологии разработки программного обеспечения заключаются в следующем: И. Введение A...

Ториго  — революция в игре Го
Наш следующий вызов против ИИ и для ИИ. Сможет ли он победить людей в обновленной игре Го? Обратите внимание, что в следующей статье AI означает искусственный интеллект, а Goban  —..

Простое развертывание моделей с помощью Mlflow — Упаковка классификатора обзоров продуктов NLP от HuggingFace
Как сохранить свои модели машинного обучения в формате с открытым исходным кодом с помощью MLFlow, чтобы позже получить возможность легкого развертывания. Сегодня модели упаковки имеют несколько..

Математика и интуиция - Часть 1
У каждой математической формулы есть доказательство. Часто эти доказательства слишком сложно понять, поскольку многие из них основаны на индукции, некоторые - на очень сложных наблюдениях, а..