Как реализовать кнопку «История» - PullRequest
0 голосов
/ 26 января 2020

У меня есть веб-сайт с информацией о клиенте (www.mysite.com/client.php?id=1234). Эта страница может быть загружена из разных мест на веб-сайте.

Я хочу, чтобы на предыдущей странице была кнопка "Назад".

Моим первым решением было использование <a href="javascript:window.history.back();">back</a>. Обычно это работает нормально.

Но, конечно, детали клиента могут быть отредактированы (модальным bootstrap). После нажатия «сохранить» данные сохраняются, и данные клиента (www.mysite.com/client.php?id=1234) снова загружаются для отображения правильных (обновленных) данных. Теперь вышеупомянутое решение больше не работает нормально, так как «Back-Button» нужно дважды нажать, чтобы попасть на сайт «entry».

Вопросы:

1) Является ли JavaScript -Решение правильное или мне нужно реализовать серверный массив для отслеживания журнала истории (звучит довольно тяжело)?

2) Что-то не так с перезагрузкой сайта после Обновить? Или я могу предотвратить ведение журнала истории на стороне клиента в этом случае?

3) Есть еще идеи?

Спасибо за вашу поддержку!

Тим

1 Ответ

0 голосов
/ 27 января 2020

Кнопка «Назад» обычно возвращает пользователя к предыдущему URL. Браузер может кэшировать содержимое страницы и показывать устаревшие данные. Вы можете сказать браузеру не кэшировать определенные c страницы.

<meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate" />
<meta http-equiv="Pragma" content="no-cache" />
<meta http-equiv="Expires" content="0" />

Кроме того, любое пользовательское решение c завершится неудачей, если один пользователь изменяет данные, а другой просто просматривает их. Вы должны принудительно получать данные с сервера при каждой загрузке страницы. Следовательно, заголовки без кэширования

ОБНОВЛЕНИЕ:

Чтобы вернуть пользователей туда, куда вы хотите, вы можете использовать другой параметр, указывающий «обратный» целевой URL. Например,

 www.mysite.com/client.php?id=1234&backdestination=list.php%3Fshow%3D123 
 //list.php?show=123

, затем на странице создайте кнопку / ссылку и используйте значение из backdestination

ОБНОВЛЕНИЕ 2:

Вы можете проверить window.History API и в частности replaceState метод. Технически это позволяет вам указать, где находится «назад». Тем не менее, вам все равно нужно переносить URL backdestination между запросами. Либо через параметр GET, переменную сеанса или локальное хранилище.

Возможно, вы могли бы обобщить реализацию, всегда сохраняя историю последних X URL. Затем, если вам нужно изменить задний пункт назначения, используйте какой-то алгоритм, чтобы определить, откуда пришли пользователи. Например, перевести пользователя на последний URL, где имя файла сценария не является текущим:

история запросов:

 /list.php
 /list.php?page=2
 /client.php?id=123     // User viewing the client
 /client.php?id=123     // Page reload after POST

Теперь, если пользователь щелкает назад, тот же клиент. php загружено. Однако вы можете создать общий сценарий c, который изменяет объект History с replaceState().

Надеюсь, это даст вам некоторые идеи.

...