У меня есть страница форума, которая отображает древовидную структуру сообщений под текущим выбранным сообщением. Когда вы нажимаете на сообщение в дереве, новое тело сообщения загружается в div в верхней части страницы с помощью AJAX, а затем запускается следующий код:
window.location.hash = "page_top";
Конечно, "page_top" - это якорный элемент в верхней части страницы, поэтому вновь загруженное тело сообщения прокручивается.
Это прекрасно работает во всех браузерах, кроме Safari. В Safari (протестировано на ПК и iPhone) он работает только при первой установке location.hash . Если вы установите его снова, страница не будет прокручиваться.
Конечный результат заключается в том, что вновь загруженное тело сообщения не прокручивается в режиме просмотра в Safari, и вам приходится возвращаться к началу страницы каждый раз, когда выбираете новое сообщение из дерева.
Почему Safari не нравится, и я могу что-нибудь сделать, чтобы это исправить?
Edit:
Я предполагаю, что это связано с ошибкой, которую вы можете найти в Google по поводу location.hash и Safari. Похоже, что в Safari раньше была ошибка, когда, если вы дважды указали одно и то же значение для хэша, это привело бы к перезагрузке страницы. Я предполагаю, что когда они исправили эту ошибку, они исправили ее слишком тщательно и перестали делать что-либо, когда вы снова установите хэш на то же значение.
http://www.howtocreate.co.uk/safari/locationHashBug.html