Использование javascript history.back() не работает в Safari.. как мне сделать его кросс-браузер?

Я использую

<a href="index.php" onclick="history.back();return false;">Back</a>

чтобы вернуться к предыдущей ссылке на страницу. Он отлично работает в Windows (IE/Mozilla), но не работает в Safari как на Windows/Mac.

Есть ли способ заставить его работать со всеми системами/браузерами (кросс-браузер/платформа)?

Если это невозможно, есть ли другой способ с использованием PHP и т.д.

Ответ 1

он должен быть history.go(-1)

Ответ 2

Вам следует подумать об этом так:

<a href="javascript:history.go(-1)">Back</a>

Ответ 3

Попробуйте это вместо этого. Он должен работать через IE, FF, Safari и Chrome.

<a href="#" onclick="if(document.referrer) {window.open(document.referrer,'_self');} else {history.go(-1);} return false;">Cancel<a>

Ответ 4

Я столкнулся с аналогичной проблемой на сайте электронной коммерции, который я создавал для одного из моих клиентов. Сначала я пошел по маршруту:

window.history.back();

при нажатии кнопки. Я столкнулся с той же проблемой, с которой вы сталкиваетесь с проблемами перекрестной совместимости.

Чтобы ответить на вопрос о

Если это невозможно, есть ли другой способ с использованием PHP и т.д.

Мое мнение заключается в том, что вы не должны вызывать метод на сервере для выполнения операции с клиентом. Это лишние накладные расходы на ваше приложение и, на мой взгляд, плохой дизайн/реализация.

Теперь, чтобы ответить на ваш основной вопрос:

Есть ли способ заставить его работать со всеми системами/браузерами (кросс-браузер/платформа)?

Чтобы решить эту проблему, я нашел библиотеку файлов cookie клиента, созданную Mozilla (https://developer.mozilla.org/en-US/docs/Web/API/Document/cookie) из другого сообщения StackOverflow (мои извинения автору - У меня нет ссылки на ваш пост).

Используя библиотеку, я создаю файл cookie с ключом "back-url", когда пользователь переходит к части моего приложения, где я хочу, чтобы они могли вернуться:

$('#id-of-button-clicked').click(function() {
    docCookies.setItem("back-url", window.location.href, ".myDomain.com", "/");
});

Этот код устанавливает куки файл с ключом-ключом 'back-url' и текущий url и делает его доступным из корневого каталога myDomain.com.

Далее, на странице, где я хочу, чтобы пользователь мог вернуться к URL-адресу, установленному в файле cookie, я вызываю следующий код:

$(‘#id-of-back-button’).click(function() {
    window.location.href = docCookies.getItem('back-url');
});

Этот код устанавливает расположение окна, получая значение "back-url".

Отказ от ответственности: я не профессиональный js-разработчик, просто пытаюсь внести свои два цента с некоторых уроков, которые я узнал.

Вызовы этого ответа:

  • В этом ответе используются файлы cookie, многим людям не нравится использование файлов cookie. Требования моих клиентов позволяют мне использовать файлы cookie.
  • Я не шифрую файл cookie - некоторые могут подумать об этой плохой практике. Я все еще нахожусь на ранней стадии реализации нашего развития. Однако я ограничиваю доступ к файлу cookie только в пределах нашего домена.