Как передать переменную из одной вкладки браузера в другую?
То есть, в браузере открыто две вкладки с двумя разными, моими, сайтами и надо передать текст на другую вкладку. Как можно передать?
|
Всё, я уже понял как это сделать. Можно сохранять куки для любого домена. Например так
$.cookie('cookie', 'cookie_value', {
domain: ''
});
|
Чёрт. Не знаю почему, но почему-то уже не работает способ который написан выше. То есть для отдельных сайтов сохраняются отдельные куки, несмотря на то что домен указан пустой. Если не ошибаюсь, немного ранее этот способ работал.
|
милт,
юзай кросс-доменные запросы |
Цитата:
если сайт один но разные страницы то можно storage пример https://github.com/Poznakomlus/localstorage |
Poznakomlus,
Кроссдоменный Вариант: 1. Пишем скрипт для обоих доменов, считывающий window.name во фрейме начинающийся с name="sendMessage=Бла Бла бла" 2. Бла Бла бла во фрейме перезаписываем в Storage к примеру с тем же именем localStorage.sendMessage По событию изменения Storage(вешаем обработчик на вкладках), - считываем на нужной вкладке ячейку localStorage.sendMessage 3. Когда нужно передать, ставим фрейм с адресом принимающего домена с нужным name и сообщением |
Deff, не совсем понял зачем name здесь использовать (как работает я знаю)
как по мне вариант с фреймами по сути аналогичен workers недавно побаловался с фреймами почти как Ajax :) |
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 сами по себе интересная штука. можно и динамически запускать :blink: P.S. Где-то я ошибся для Ie, Edge :cray: |
Poznakomlus,
name фрейма(<iframe name="xxxx">) считывается во фрейме как window.name (весчь древняя и кроссбраузерная, символы кроме кавычек - любые, можно заэнкодить - если данные с кавычками, длина не ограничена, в отличии вставки данных в хешь Url фрейма (тоже возможный метод передачи во фрейм) Ну фрейм то с другого домена, А с workers не пробовал междоменный обмен, если конечно не через postMessage Но postMessage и blob имхо только c 11 версии ИЕ работают (любые ограничения кроссбраузерности убивают часть пользователей на моем ресурсе, 2% - 3% от всех - это десятки тысяч ================== worker интересен мне был в качестве обмена и отслеживания активных вкладок(и последней активной) с одного домена Задача возникает для скриптов уведомлений на основе title хидера, дабы не дублировались и уведомляли лишь на последне активной вкладке (Вам Письмо, к примеру, Важно так же если при этом есть и звук, чтобы не было звуков с нескольких вкладок, т.е и для поддержки всяких проигрывателей с автозапуском тоже важно, дабы звуки не дублировались с нескольких открытых вкладок) . Аналогично можно исключать таким методом и comet-запросы на неактивных вкладках. В worker нет ограничений на запуск setTimeout и setInterval на неактивной вкладке (в отличии от скриптов на странице, при неактивной вкладке интервал запуска по-моему становиться не менее секунды) |
Цитата:
Надо передать текст между двумя сайтами которые уже открыты в браузере. Как это сделать? storage не подходит потому что сайты с разных доменов. |
Цитата:
Вам же нужно загружать на 1 и 2 сайте реальный файл с помощью которого вы будете работать с технологией workers |
| Часовой пояс GMT +3, время: 02:24. |