Хэш-ссылка обновляет страницу

У меня есть фрагмент кода, который установлен на сторонних сайтах. Я не могу вдаваться в детали, но он загружает 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 для обработки истории.

Другие вопросы по тегам