Страницы

Поиск по вопросам

среда, 5 февраля 2020 г.

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

#javascript #jquery


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




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

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


Ответы

Ответ 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")

Ответ 2



Используйте событие storage: Page 1: window.addEventListener('storage', e => console.info('Changed')) Page 2: localStorage.setItem('name', 42) При изменении хранилища, на всех вкладаках с этим хранилищем произойдёт событие, где можно проверить имя и изменить текст. Важно: Обратите внимание на то, что изменение (и, соответственно, событие) произойдёт только при... изменении данных. Т. е. если в name уже лежало значение 42, то установка name = 42 не приведёт к генерации события.

Комментариев нет:

Отправить комментарий