Safari игнорирует/удаляет якоря (или "хэштеги") при нажатии на гиперссылки?

Мне нужно указать одну страницу на другую, а затем перейти к определенному разделу. В Chrome и Firefox использование URL-адреса, например www.example.com#section1 помогает. (# section1 может быть привязкой или идентификатором элемента).

Однако в Safari хэш исчезает, когда я нажимаю на ссылку.

Почему это происходит? Возможно ли это сделать в Safari? Если нет, как я могу обойти эту проблему?

Ответы

Ответ 1

При использовании гиперссылок, указывающих на внутренние разделы на других страницах, вы должны помнить о добавлении косой черты (/) перед хэштегом для совместимости с браузером.

Например: www.example.com/#item-1

Выполнение www.example.com#item-1 не принимается всеми браузерами (видимо, с помощью Chrome и Firefox)

Ответ 2

Случай: у меня есть параметры после '#', как url ​​# myParam = 123, когда я изменил параметры как url # myParam = 789 Safari иногда загружает предыдущую страницу на основе myParam = 123,

хотя в адресной строке он показал myParam = 789

Решение: используйте url? # myParam = 123, затем Safari будет загружать новую страницу каждый раз.
Использование '?' до '#' решил мою проблему.

Ответ 3

Для меня это была та же проблема, что и mrbinky3000, о которой говорилось выше: mod-rewrite сервера убивал хэш на сафари.

Решение заключалось в использовании полной абсолютной ссылки, такой как:   http://www.example.com/path/#item-1

Ответ 4

У меня была связанная с Safari проблема (на iPhone/iOS), казалось бы, отсекая хэш/фрагмент при выполнении:

var newHash = ...;
window.location.replace("#" + newHash);

Фактически проблема заключалась в ошибке javascript, которая появилась только в Safari. Поскольку я не мог легко оценить консоль javascript для iPhone, я решил загрузить старую версию Window Safari (связанный пост, скачать).

Затем я смог бы воспроизвести проблему с iPhone на рабочем столе Windows, используя старую версию Safari. В этот момент я обнаружил, что тег javascript имел отсутствующий ']'. Это была законная ошибка, но ее каким-то образом игнорировали Chrome, Firefox и IE.

Window.location.replace() даже не вызывался, потому что код был взломан на ошибке javascript. Поэтому проблема заключалась не в том, что Safari лишал хэштегов, хотя он оказался таким же, как и при многосерверном тестировании.

Ответ 5

Я просто испытал такую проблему. Я использовал URL-адрес перезаписи в asp.net web.config. Когда Safari хэш и все после этого были удалены. Пробовав некоторые из упомянутых выше вещей, у меня все еще были проблемы. Проблема для меня заключалась в том, что все это происходило под HTTPS. Как только я указал полный URL-адрес в перенаправлении и включил схему https://, перенаправление работало правильно и сохраняло хэш. Обратите внимание, что это не проблема с Chrome или Firefox.