Как отключить загрузку тела при использовании кнопки браузера назад - PullRequest
0 голосов
/ 13 апреля 2020

Мы используем функцию загрузки тела, чтобы инициализировать выборки в форме, если пользователь изменяет эти выборки и часто отправляет форму, когда нужно нажать кнопку назад, чтобы изменить выбор и снова отправить форму.

Когда пользователь щелкает обратно форму, явно сбрасывается с функции загрузки. Мы хотим, чтобы пользователь мог использовать кнопку «Назад» для просмотра выбранных им вариантов.

Мы попробовали несколько способов запуска переменных один раз и отключили загрузку в кнопке отправки. Ничто не было успешным.

Есть идеи?

1 Ответ

0 голосов
/ 16 апреля 2020

Попробуйте вызвать это из функции onload перед очисткой формы:

function isBackForward() {
  if (typeof performance === "object") {
    // Use the newer API if available.
    // https://developer.mozilla.org/en-US/docs/Web/API/PerformanceNavigationTiming
    if (typeof performance.getEntriesByType === "function") {
      var entries = performance.getEntriesByType("navigation");
      if (entries.length === 1) {
        if (entries[0].type === "back_forward") {
          return true;
        } else {
          return false;
        }
      } else {
        // unable to determine
        return void(0); // undefined
      }
    // Try the older deprecated API instead
    // https://developer.mozilla.org/en-US/docs/Web/API/PerformanceNavigation
    } else if (typeof performance.navigation === "object") {
      if (performance.navigation.type === performance.navigation.TYPE_BACK_FORWARD) {
        return true;
      } else {
        return false;
      }
    } else {
      // unable to determine
      return void(0); // undefined
    }
  } else {
    // unable to determine
    return void(0); // undefined
  }
}

Эта функция вернет true, если используется назад или вперед, не определено, если браузер не поддерживает необходимый apis для определения того, что или false, если это был другой тип навигации.

К сожалению, это не будет работать в Safari. Для Safari вы можете установить значение состояния в sessionStorage (см. https://developer.mozilla.org/en-US/docs/Web/API/Window/sessionStorage) для страницы при нажатии кнопки отправки, а затем проверить ее перед очисткой формы.

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