Форум программистов, компьютерный форум, киберфорум
JavaScript
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.92/13: Рейтинг темы: голосов - 13, средняя оценка - 4.92
 Аватар для Behelit
1 / 1 / 0
Регистрация: 07.05.2014
Сообщений: 44

Приложеие Chrome: отправка сообщения background -> content_script

29.09.2015, 13:20. Показов 2624. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Не могу осуществить отправку из Фона (background) в Вкладку (content_script).
Где же я допустил ошибку? id вкладки выводится верно, отправляю, а принимать - не принимает

Уже всё перебрал, понять не могу, в чем беда то


background.js
JavaScript
1
2
3
4
5
6
chrome.tabs.query({
    url: "*://steamcommunity.com/*"
}, function(tabs) {
    console.log(tabs[0].id);
    chrome.tabs.sendMessage(tabs[0].id, "Сообщение от Фона");
});
script_in_content.js
JavaScript
1
2
3
4
console.log('Контент-скрипт запущен!');
chrome.runtime.onMessage.addListener(function (message, sender, sendResponse) {
    console.log(message);
});

manifest.json
JSON
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
{
"manifest_version": 2,
 
"name": "MName",
"short_name": "MName- short_namet",
"description": "MName- description",
"version": "1",
"icons": {
},
"options_page": "popup.html",
 
"background": { "scripts": ["background.js"] },
"permissions": [
    "tabs",
    "*://steamcommunity.com/*"
    ],
 
"content_scripts":[{
        "matches": ["*://steamcommunity.com/*"],
        "js": ["script_in_content.js"]
    }]
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
29.09.2015, 13:20
Ответы с готовыми решениями:

Как работает background-script в chrome
Добрый день, подскажите как работает background-script в chrome, я пытаюсь сделать чтобы его работа посторялась через каждую секунду....

Баг в Chrome body background не на всю страницу
Народ, может кто сталкивался в хроме такой баг, что фон страницы не полностью заливается body{ background: #bd7011; ...

Не отображает background color в Chrome, в Mazile показывает то, что и должно быть!
Код CSS: * { margin: 0; padding: 0; } ul { list-style: none; } a { text-decoration: none;

5
Ренегат
Эксперт HTML/CSS
 Аватар для BANO
1740 / 1085 / 386
Регистрация: 06.08.2014
Сообщений: 5,203
Записей в блоге: 1
29.09.2015, 18:44
Behelit, там через порты надо
0
 Аватар для Behelit
1 / 1 / 0
Регистрация: 07.05.2014
Сообщений: 44
29.09.2015, 20:45  [ТС]
Делаю так, всё равно сообщение в Консоль не приходит

background.js
JavaScript
1
2
port = chrome.tabs.connect(tabs[0].id);         
port.postMessage("msg01");
script_in_content.js
JavaScript
1
2
3
4
5
chrome.runtime.onConnect.addListener(function(port) {
    port.onMessage.addListener(function(message) {
        console.log(message); //
    });
});
Добавлено через 6 минут
как же мне быть?
0
Ренегат
Эксперт HTML/CSS
 Аватар для BANO
1740 / 1085 / 386
Регистрация: 06.08.2014
Сообщений: 5,203
Записей в блоге: 1
29.09.2015, 21:08
Behelit, поменяйте местами то, что у вас в контенте и то, что на бекграунде

короче у меня всё работает так
content.js
JavaScript
1
2
3
4
5
a=chrome.runtime.connect();
a.postMessage("i connected");
a.onMessage.addListener(function(opts){
    MyListner(opts,"from back");
});
back.js
JavaScript
1
2
3
4
5
chrome.extension.onConnect.addListener(function(port){
    logger(port.sender.tab.id," >> ",MyGlobal.login.tab);
    port.onMessage.addListener(logger)
});
var logger=console.log.bind(console);
0
 Аватар для Behelit
1 / 1 / 0
Регистрация: 07.05.2014
Сообщений: 44
29.09.2015, 22:37  [ТС]
То есть смысл таков:
При активации content.js он создаёт порт для соединения с back.js
Затем back.js запоминает этот порт, и по этому порту отправлять обратно. У меня получилось.

Но! Почему мой вариант не работает? В чем там ошибка? Он не имеет право на существование?
JavaScript
1
2
port = chrome.tabs.connect(tabs[0].id);         
port.postMessage("msg01");
Так как в некоторых моментах очень удобен, так как лучше можно контролировать вкладки, как вы считаете?
0
Ренегат
Эксперт HTML/CSS
 Аватар для BANO
1740 / 1085 / 386
Регистрация: 06.08.2014
Сообщений: 5,203
Записей в блоге: 1
29.09.2015, 22:44
Behelit, задняя страница ОДНА, а вкладок много, легче хранить соединение(port) чем запоминать всё хренотень с айдишниками и всей этой галиматьёй

короче порты удобнее, потому, что они для этого сделаны

а sendMessage удобен, только тогда, когда у вас приложение ничего не делает, кроме вывода в консоли

port может передовать любые данные, а sendMessage только строковые

Добавлено через 3 минуты
Behelit, ваш наверное имеет право на существование, но вы там надо поизголятся, чтобы он работал

надо контенту слушать, а не пришёл ли коннект, а тут и так понятно, есть таб, он приконнектился, всё
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
29.09.2015, 22:44
Помогаю со студенческими работами здесь

БД (Oracle) + приложеие (Delphi) по сети
Сделал приложение (в Delphi) работа с БД (находит в oracle) Теперь надо реализовать сетевую часть. Т.е на одном компьютере установлен...

Отправка сообщения
Значит есть форма. Код: $result = mail ..........и так далее пишу потом значит: if ($result){ echo...

Отправка сообщения
Ребят, помогите пожалуйста, не пойму, куда отправляется сообщение. В html файле вот такая запись: <span class="action">...

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

Отправка сообщения
Настроил в форме действие на кнопку таким образом, что когда заносятся какие-то данные, чтобы на мой почтовый ящик приходило сообщение о...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а привычная функция main(). . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru