Обновить (не перезагрузить) iFrame - PullRequest
0 голосов
/ 16 января 2019

Я пытаюсь выяснить, как обновить содержимое iFrame на странице. Я довольно много гуглял и разыскивал старые посты, но все предлагаемые решения предназначены для перезагрузки iFrame на исходный URL src, а не на активный URL.

Например, у меня есть iFrame, который содержит мой клиентский портал Freshdesk, встроенный в мой основной веб-сайт. Если я щелкаю по нескольким страницам внутри iFrame, я хочу перехватить обновление страницы и просто обновить iFrame до активной страницы.

Текущее поведение: Freshdesk Home -> База знаний -> Новый билет -> Обновить -> Вернуться на главную

Желаемое поведение: Freshdesk Home -> База знаний -> Новый билет -> Обновить -> Вернуться к новому экрану билетов (последняя страница, посещенная в iFrame перед запуском обновления)

Обновление не должно запускаться обновлением f5, я могу использовать встроенную кнопку на странице, но для этого нужно перезагрузить iFrame на ту же страницу, на которой он был последним, а не на исходный URL-адрес src. Я попробовал следующий код, но он каждый раз обновляется на домашней странице Freshdesk:

document.getElementById('iframeid').src = document.getElementById('iframeid').src

и

document.getElementById('some_frame_id').contentWindow.location.reload();

Итак, как я могу обновить свой iFrame, не возвращаясь к исходному URL-адресу src?

Ответы [ 2 ]

0 голосов
/ 16 января 2019

С помощью Шилли и небольшого мозгового штурма я нашел решение своей проблемы и выкладываю его здесь для всех, кто в моей ситуации. Оказывается, что Freshdesk (веб-сайт внутри iframe) позволяет использовать пользовательский javascript. Используя эту функциональность, я придумал следующее:

1) используйте parent.postMessage при загрузке первой страницы, чтобы отправить URL текущей активной страницы на мой основной веб-сайт.

2) использовать sessionStorage для хранения URL текущей страницы Freshdesk на моем веб-сайте

3) при загрузке первой страницы моего основного веб-сайта проверьте, установлено ли значение sessionStorage, и, если это так, задайте для sFc iFrame это значение.

Это не совсем настоящее решение «только при обновлении», однако оно заставляет последнюю посещенную страницу iFrame сохраняться в течение оставшейся части сеанса пользователя, что означает, что они не потеряют свое место, если обновятся или временно отключатся. Благодаря использованию sessionStorage, он также сбрасывается обратно, когда пользователь закрывает страницу, то есть при следующем посещении он перезапускается на домашней странице Freshdesk (или на любом другом веб-сайте, который вы размещаете в iFrame).

0 голосов
/ 16 января 2019

Вы можете использовать событие onbeforeunload https://developer.mozilla.org/en-US/docs/Web/API/WindowEventHandlers/onbeforeunload, чтобы определить, что страница будет закрыта или обновлена.

Таким образом, вы можете сравнить активный src и исходный src iframe, чтобы узнать, переходил ли пользователь на какую-либо страницу внутри iframe.

Затем выберите вашу любимую систему передачи сообщений, чтобы убедиться, что у портала есть способ узнать, что src после его загрузки снова: параметр url, локальное хранилище, cookie, что-то еще ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...