docmikhail
@docmikhail

Как изменить iframe src из соседнего файла?

Есть два файла -- 1.php и 2.php. Расположены на веб-сервере.

В файле 1.php задумывается кнопка. В файле 2.php iframe.

Каким образом можно сделать так, чтобы нажав кнопку в 1.php изменилось содержание фрейма в файле 2.php?

Как можно реализовать подобное? Нужно ли что-то разворачивать на сервере или возможно обойтись этими двумя файлами и каким-то кодом?

Спасибо за любую помощь.
  • Вопрос задан
  • 186 просмотров
Пригласить эксперта
Ответы на вопрос 1
flapflapjack
@flapflapjack
на треть я прав
1.php и 2.php - это два скрипта, лежащих на сервере. При чем тут iframe вообще?

Вы имеете ввиду два окна в браузере соседних, а не 2 файла?
Если два окна, то насколько я знаю, можно с одного окна управлять другим, если второе окно - дочернее первого, то есть второе окно создано первым, а не открыто самим юзером вручную.

Второй способ - управляйте куками или localstorage из первого окна, а во втором отслеживайте изменения, и делайте с изменившимися данными что вашей душе угодно. Естественно эти оба окна должны быть в одном домене.

Тут есть пример того, что вы хотите.

Вот моя реализация для вас:
dev.hozmagkomi.ru/test/1.html
dev.hozmagkomi.ru/test/2.html

По клику загрузится 3.html

Код 1.html:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="jquery.cookie.js"></script>

<button onclick="$.cookie('state', '3.html');">Set new state</button>


2.html:
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="jquery.cookie.js"></script>
<script>

var lastState = 0;

$(document).ready(function()
{
    cookieTimer();
});

function cookieTimer()
{
    var t = $.cookie('state');
    if(t != lastState)
    {
        lastState = t;
        $('#iframe').attr('src', lastState);
    }
    window.setTimeout(cookieTimer, 500);
}


</script>
<iframe id="iframe"></iframe>


3.html сами напишете,

Не забудьте подгрузить плагин jquery.cookie

С моего сервера не грузите себе - я удалю потом.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы