Почему история вкладок браузера не поддерживается, когда перенаправления запускаются щелчком () - PullRequest
0 голосов
/ 19 апреля 2020

Я обнаружил, что история вкладок браузера не поддерживается, когда перенаправления запускаются методом click (). Это неудобство для меня, и я очень хотел бы получить совет StackOverflow по этому вопросу.

Чтобы уточнить, рассмотрим страницу1a. html, закодированную следующим образом:

<a href="page2.html">Redirect to Page 2</a>

Когда Пользователь открывает страницу 1a в новой вкладке и щелкает ссылку «Перенаправить на страницу 2», при этом отображается содержимое страницы 2. html - никаких сюрпризов. Более того, как и ожидалось, кнопка «Назад» браузера будет активирована и при нажатии будет отображать страницу 1.

Но версия «dynamici c», page1b. html выше, ведет себя совершенно иначе:

<a id="redirect" href="page2.html"></a>
<script>
document.onload = function () {
document.getElementById("redirect").click();
};
</script>

Когда page1b запускается в тех же условиях, что и выше, страница 2 будет отображаться, как и раньше, но кнопка возврата браузера теперь будет не включена. Там нет истории. Это как если бы мимолетное существование page1b во вкладке никогда не происходило.

Я смутно чувствую, почему это может быть разумным поведением со стороны браузера, но это вызывает у меня большое горе, как версия моего приложения page2 содержит значительное динамическое c взаимодействие, которое иногда может побудить пользователя нажать кнопку «назад». Я полагался на возможность «поймать» намерение «назад» в версии моего приложения на page1, чтобы я мог справиться с этим соответствующим образом.

Я не могу найти ссылки на что-либо из этого в Интернете, и мне стало интересно, не попал ли я в ошибку в Chrome, моем любимом браузере. Более того, я могу поклясться, что вещи не всегда работали так. Но быстрый тест в Opera, казалось, показал тот же эффект, поэтому я, кажется, заблудился где-то внизу.

Если ошибка действительно моя, я был бы очень благодарен всем, кто может сказать мне, где Я иду не так. В качестве альтернативы, если подтверждается, что это спроектированное поведение, кто-нибудь может подсказать, как его можно изменить?

1 Ответ

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

Вы пытались изменить

document.getElementById("redirect").click();

на

location.href = document.getElementById("redirect").href;

Я надеюсь, что эта работа.

...