Навигация назад и вперед не сохраняет данные в браузерах Firefox / chrome, но отлично работает в Safari

#javascript

#javascript

Вопрос:

Сценарий таков: у меня есть 2 вкладки в приложении: 1. Вкладка Список пациентов 2. Вкладка Поиск пациентов

После входа в приложение по умолчанию будет выбрана первая вкладка, которая является вкладкой списка пациентов, когда я выбираю вкладку 2, вкладку поиска пациента и поиск пациента, я вижу список пациентов с вертикальной прокруткой. Если я выбираю пациента, приложение переводит меня на следующую страницу. Когда я перехожу назад, я возвращаюсь к той же вкладке поиска пациента, сохраняя те же данные и положение прокрутки в браузере Safari.

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

Я использую приведенную ниже функцию для навигации

 function detailsBack() {
  var backBtn = document.getElementById("backBtn");
  if (backBtn.innerHTML == i18n.PTLST) {
    javascript:history.go(-1);
  }
} 
  

Не уверен в проблеме. Пожалуйста, взгляните и поделитесь своими мыслями

Спасибо Дипак

Ответ №1:

Потому что javascript:history.go(-1) не является допустимым javascript. Если бы вы использовали соответствующий отладчик (firebug, например), вы бы увидели там ошибку.

Попробуйте вызвать history.go(-1) , пропустив javascript: часть. Вам нужно это только в виде гиперссылки.

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

1. Ну да, очевидно. Но тогда он потенциально не знал бы, что такое отладчик javascript или почему он не работает здесь, но он есть в его ссылке.

2. И даже тогда вам не следует его использовать. предпочтительнее onclick="history.go(-1); return false или onclick="history.back(); return false

3. <a href="javascript:someFunction()" произойдет сбой в браузерах, в которых отключен javascript, и частично выгрузит браузер — если someFunction покидает страницу, то это меньшая проблема, onclick="someFunction(); return false" или тем лучше onclick="return someFunction()" , если функция возвращает false — это то, что я предлагаю. Пуристы добавят обработчик событий в скрипт в head, что является лучшим методом