JS изменить текст на другой вкладке

291
13 октября 2017, 18:36

Допустим открыта страница в браузере mysite.com/page-1.php в которой есть элемент:

<span id="test-1"></span>

Далее в новой я открываю страницу mysite.com/page-2.php в которой есть js команда которая должна сменить текст в элементе test-1 в первой вкладке - mysite.com/page-1.php.

Возможно ли как то выполнить данную задачу средствами js/jquery?

Answer 1

Предложенный вариант с storage работает только на одной и той де странице, то есть если открыть в нескольких табах page-1.php то предложенный вариант с window.addEventListener('storage', e => console.info('Changed')) сработает, иначе предлагаю сделать след. образом, как из ответа https://ru.stackoverflow.com/a/729727/243667

page-1.php

var storageParam = "name";
var defaultStorageVal = localStorage.getItem(storageParam);
setInterval(function() {
    var val = localStorage.getItem(storageParam);
    if (val != defaultStorageVal) {
        document.getElementById("test-1").innerHTML=val;
        defaultStorageVal = val;
        // если alert один раз только должен сработать, убейте интервал
    }
}, 500); // тут уже сами смотрите

page-2.php

localStorage.setItem("name", "text")
Answer 2

Используйте событие storage:

Page 1:

window.addEventListener('storage', e => console.info('Changed'))

Page 2:

localStorage.setItem('name', 42)

При изменении хранилища, на всех вкладаках с этим хранилищем произойдёт событие, где можно проверить имя и изменить текст.

READ ALSO
JS событие на другой вкладке

JS событие на другой вкладке

Открываю страницу mysitecom/1

244
Создание элементов с помощью js

Создание элементов с помощью js

Как создать элемент с помощью ``- такой строки чтобы передать переменные, при createElement создается просто пустой div

242