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.