Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 26.04.2017, 10:23
Профессор
Отправить личное сообщение для Артист Посмотреть профиль Найти все сообщения от Артист
 
Регистрация: 25.09.2016
Сообщений: 163

Передача массива аргументов
Есть скрипт, подключаемый к странице, есть скрипт приложения(фоновый).
Общаются они посредством chrome.runtime.sendMessage.

Вот например я отправляю мессагу в фоновый скрипт, с 2мя параметрами:
function smCalback(response) // Обработчик ответов на сообщения
{
    alert('Ответ ' + response.respId)   
}
 
chrome.runtime.sendMessage({msgId: 1, respId: 111}, smCalback) // Отправка сообщения


А это в фоновом скрипте, принимает сообщения, и отвечает на них.
chrome.runtime.onMessage.addListener // Отлов сообщений от контент скриптов
(
    function(req, sender, resp)
    {
        switch(req.msgId) // Ид сообщения
        {
            case 1: // Некое действие
            {
                resp({respId: req.respId}) // Ответ на сообщение
                break
            }
        }
        return false
    }
)


Так вот, как мне передать все параметры в ответе на сообщение, которые были у сообщения?
Т.е. чтобы не писать их вот так:
{respId: req.respId}


Конечно это всего лишь пример, на самом деле мне параметры нужно передавать в функции...

Гуглил конечно:
function sayHi()
{
    for (var i = 0; i < arguments.length; i++)
    {
        alert( "Привет, " + arguments[i] );
    }
}
 
sayHi("Винни", "Пятачок"); // 'Привет, Винни', 'Привет, Пятачок'


Но не понял нифига, мне перебирать не нужно, я же аргументы подписываю...
Ответить с цитированием
  #2 (permalink)  
Старый 26.04.2017, 10:36
Профессор
Отправить личное сообщение для Rise Посмотреть профиль Найти все сообщения от Rise
 
Регистрация: 07.11.2013
Сообщений: 4,664

Артист, resp(req)
Ответить с цитированием
  #3 (permalink)  
Старый 26.04.2017, 10:47
Профессор
Отправить личное сообщение для Артист Посмотреть профиль Найти все сообщения от Артист
 
Регистрация: 25.09.2016
Сообщений: 163

Спасибо. ))
Ответить с цитированием
  #4 (permalink)  
Старый 26.04.2017, 11:04
Профессор
Отправить личное сообщение для Артист Посмотреть профиль Найти все сообщения от Артист
 
Регистрация: 25.09.2016
Сообщений: 163

А как вот тут сделать:
function GetHttpRequest(href, arg) // Get запрос на url
{
	var xhr = new XMLHttpRequest()
	xhr.withCredentials = true
	xhr.onreadystatechange = function(e)
	{
		e.data = arg
		ProcessRequestChange.apply(this, arguments) // Обработчик
	}
	xhr.open('GET', href, true)
	xhr.send(null)
}

chrome.runtime.onMessage.addListener // Отлов сообщений от контент скриптов
(
    function(req, sender, resp)
    {
        switch(req.msgId) // Ид сообщения
        {
            case 1: // Некое действие
            {
                GetHttpRequest(req.href, {reqId: req.reqId, respId: req.respId, response: resp})
                return true
            }
        }
        return false
    }
)


req - это массив аргументов мессаги, я так понял.
resp - функция, отправляющая ответ на мессагу.

Нужно передать и аргументы, и функцию(ответ на мессагу будет отправлен позже).

Так уже не прокатит, видимо:
GetHttpRequest(req.href, req, resp)


Может можно в массив аргументов впихнуть и функцию?

Типа такого:
req.resp = resp

GetHttpRequest(req.href, req)
Ответить с цитированием
  #5 (permalink)  
Старый 26.04.2017, 12:29
Профессор
Отправить личное сообщение для Артист Посмотреть профиль Найти все сообщения от Артист
 
Регистрация: 25.09.2016
Сообщений: 163

Да, вроде работает...
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Передача в функцию переменного количества аргументов Эдди Элементы интерфейса 35 09.11.2018 15:25
Передача дополнительных аргументов при вызове функции James Brown Общие вопросы Javascript 1 05.09.2016 09:27
Передача смешанного массива из php в js Daiver Серверные языки и технологии 13 31.05.2013 10:11
Передача массива JS в cookies Denis Общие вопросы Javascript 1 04.08.2009 12:24
Передача массива серверу B~Vladi Оффтопик 2 09.07.2009 09:45