Javascript.RU

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

Как передать переменную из одной вкладки браузера в другую?
То есть, в браузере открыто две вкладки с двумя разными, моими, сайтами и надо передать текст на другую вкладку. Как можно передать?

Последний раз редактировалось милт, 05.03.2016 в 00:01.
Ответить с цитированием
  #2 (permalink)  
Старый 05.03.2016, 00:34
Аспирант
Отправить личное сообщение для милт Посмотреть профиль Найти все сообщения от милт
 
Регистрация: 28.06.2014
Сообщений: 55

Всё, я уже понял как это сделать. Можно сохранять куки для любого домена. Например так
$.cookie('cookie', 'cookie_value', {
    domain: ''
});
Ответить с цитированием
  #3 (permalink)  
Старый 05.03.2016, 09:35
Аспирант
Отправить личное сообщение для милт Посмотреть профиль Найти все сообщения от милт
 
Регистрация: 28.06.2014
Сообщений: 55

Чёрт. Не знаю почему, но почему-то уже не работает способ который написан выше. То есть для отдельных сайтов сохраняются отдельные куки, несмотря на то что домен указан пустой. Если не ошибаюсь, немного ранее этот способ работал.
Ответить с цитированием
  #4 (permalink)  
Старый 05.03.2016, 10:17
Аватар для destus
Профессор
Отправить личное сообщение для destus Посмотреть профиль Найти все сообщения от destus
 
Регистрация: 18.05.2011
Сообщений: 1,207

милт,
юзай кросс-доменные запросы
Ответить с цитированием
  #5 (permalink)  
Старый 05.03.2016, 17:45
Аватар для Vlasenko Fedor
Профессор
Отправить личное сообщение для Vlasenko Fedor Посмотреть профиль Найти все сообщения от Vlasenko Fedor
 
Регистрация: 13.03.2013
Сообщений: 1,572

Сообщение от милт
с двумя разными, моими, сайтами и надо передать текст на другую вкладку
workers
если сайт один но разные страницы то можно storage
пример https://github.com/Poznakomlus/localstorage
Ответить с цитированием
  #6 (permalink)  
Старый 05.03.2016, 23:15
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

Poznakomlus,
Кроссдоменный Вариант:
1. Пишем скрипт для обоих доменов, считывающий window.name во фрейме начинающийся с name="sendMessage=Бла Бла бла"

2. Бла Бла бла во фрейме перезаписываем в Storage к примеру с тем же именем localStorage.sendMessage
По событию изменения Storage(вешаем обработчик на вкладках), - считываем на нужной вкладке ячейку localStorage.sendMessage

3. Когда нужно передать, ставим фрейм с адресом принимающего домена с нужным name и сообщением

Последний раз редактировалось Deff, 05.03.2016 в 23:17.
Ответить с цитированием
  #7 (permalink)  
Старый 06.03.2016, 01:05
Аватар для Vlasenko Fedor
Профессор
Отправить личное сообщение для Vlasenko Fedor Посмотреть профиль Найти все сообщения от Vlasenko Fedor
 
Регистрация: 13.03.2013
Сообщений: 1,572

Deff, не совсем понял зачем name здесь использовать (как работает я знаю)
как по мне вариант с фреймами по сути аналогичен workers
недавно побаловался с фреймами почти как Ajax
Ответить с цитированием
  #8 (permalink)  
Старый 06.03.2016, 01:12
Аватар для Vlasenko Fedor
Профессор
Отправить личное сообщение для Vlasenko Fedor Посмотреть профиль Найти все сообщения от Vlasenko Fedor
 
Регистрация: 13.03.2013
Сообщений: 1,572

function getWorker() {
    var blob;
    window.URL = window.URL || window.webkitURL || window.mozURL || window.msURL;
    var mimeString = 'application/javascript';
    var code = "onmessage = function(e) { \
     var callback = Function('return ' + e.data[0])();\
     postMessage(callback.apply(this, e.data[1])); }";
    try {
        blob = new Blob([code], {type: mimeString});
    } catch (e) {
        var BlobBuilder = window.BlobBuilder || window.WebKitBlobBuilder ||
            window.MozBlobBuilder || window.MSBlobBuilder;
        var bb = new BlobBuilder();
        bb.append(code);
        blob = bb.getBlob(mimeString);
    }
    var url = window.URL.createObjectURL(blob);
    var worker = new Worker(url);
    URL.revokeObjectURL(url);
    return worker;
}
function test(a, b) {
    var result = 0;
    for (; a < b; a += 1) result += a;
    return result;
}

var worker = getWorker();
worker.postMessage([test.toString(), [1, 99999]]);
worker.onmessage = function (e) { alert(e.data);};

worker сами по себе интересная штука. можно и динамически запускать
P.S. Где-то я ошибся для Ie, Edge

Последний раз редактировалось Vlasenko Fedor, 06.03.2016 в 01:48.
Ответить с цитированием
  #9 (permalink)  
Старый 06.03.2016, 02:14
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

Poznakomlus,
name фрейма(<iframe name="xxxx">) считывается во фрейме как window.name (весчь древняя и кроссбраузерная, символы кроме кавычек - любые, можно заэнкодить - если данные с кавычками, длина не ограничена, в отличии вставки данных в хешь Url фрейма (тоже возможный метод передачи во фрейм)
Ну фрейм то с другого домена,
А с workers не пробовал междоменный обмен, если конечно не через postMessage
Но postMessage и blob имхо только c 11 версии ИЕ работают (любые ограничения кроссбраузерности убивают часть пользователей на моем ресурсе, 2% - 3% от всех - это десятки тысяч
==================
worker интересен мне был в качестве обмена и отслеживания активных вкладок(и последней активной) с одного домена
Задача возникает для скриптов уведомлений на основе title хидера, дабы не дублировались и уведомляли лишь на последне активной вкладке (Вам Письмо, к примеру, Важно так же если при этом есть и звук, чтобы не было звуков с нескольких вкладок, т.е и для поддержки всяких проигрывателей с автозапуском тоже важно, дабы звуки не дублировались с нескольких открытых вкладок) . Аналогично можно исключать таким методом и comet-запросы на неактивных вкладках. В worker нет ограничений на запуск setTimeout и setInterval на неактивной вкладке (в отличии от скриптов на странице, при неактивной вкладке интервал запуска по-моему становиться не менее секунды)

Последний раз редактировалось Deff, 06.03.2016 в 02:49.
Ответить с цитированием
  #10 (permalink)  
Старый 08.03.2016, 17:14
Аспирант
Отправить личное сообщение для милт Посмотреть профиль Найти все сообщения от милт
 
Регистрация: 28.06.2014
Сообщений: 55

Сообщение от Poznakomlus
worker сами по себе интересная штука. можно и динамически запускать
Я не понимаю как этот код может передать текст между двумя сайтами.

Надо передать текст между двумя сайтами которые уже открыты в браузере. Как это сделать? storage не подходит потому что сайты с разных доменов.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как передать результат в другую функцию hakudjin Общие вопросы Javascript 1 16.09.2015 11:52
Как передать переменную из JS в PHP методом xhr.send() ? winston3d AJAX и COMET 5 09.02.2013 20:29
Как передать значение переменной jscript в переменную php ? kastaneda19 Общие вопросы Javascript 1 10.04.2012 18:00
Как передать значение по ссылке на другую страницу сайта Rollo Общие вопросы Javascript 7 18.10.2010 15:02
Как передать переменную? bgdankrlchuk Events/DOM/Window 3 10.06.2010 10:33