Хэш-ссылка обновляет страницу
У меня есть фрагмент кода, который установлен на сторонних сайтах. Я не могу вдаваться в детали, но он загружает HTML, CSS и JS на страницу с помощью <script>
тег.
Часть кода представляет собой функцию JS, которая выполняется при нажатии на эту ссылку:
<a href="#">?</a>
Если на странице есть ошибки JS, препятствующие выполнению функции, щелчок по ссылке, очевидно, просто добавляет хэш к URL-адресу и переносит пользователя в верхнюю часть страницы. Это ожидаемое аварийное поведение.
Однако на одном стороннем сайте с множеством ошибок JS нажатие на ссылку удаляет все после домена верхнего уровня, добавляет хэш и перенаправляет на эту страницу (домашнюю страницу). Например, ссылка будет принимать пользователя от:
http://www.example.com/2010/05/14/very-interesting-blog-post/
в
http://www.example.com/#
Примечательно, что проблема возникает в Firefox и Chrome, но не в IE9. Я знаю, что может быть невозможно правильно диагностировать проблему без более подробного кода, но я не вправе ее предоставлять. Я просто надеюсь получить какое-то разумное объяснение этого странного поведения браузера.
Если это вообще помогает, то рассматриваемый сайт - это блог WordPress. Заранее спасибо.
РЕДАКТИРОВАТЬ: Это, очевидно, не вызвано какой-либо JS на сайте, потому что отключение JS и добавление ссылки с инспектором произвел то же самое поведение.
2 ответа
У меня была похожая ошибка при нажатии на любую <a href="#">
вызывает полную перезагрузку страницы. Мне удалось решить эту проблему, удалив <base href="/">
тег из <head>
страницы. Я не смог найти никакой информации по этому (пока). Я добавлю больше, если смогу найти дополнительную информацию.
Эта проблема возникает, когда вы используете windows.onpopstate для обработки кнопок «назад» или «вперед» и загрузки страницы с помощью ajax. Попробуйте решить свой код js для обработки истории.