Я знаю, что это было некоторое время назад, но я только что столкнулся с той же проблемой и отверг ужасное, но эффективное решение.Проблема: Firefox не отвечает на location.hash в некоторых фреймах.Простой пример, размещенный выше в jsfiddle, работает, но более сложные примеры (в моем случае в приложении Facebook) - нет.Решение: создайте визуально скрытый элемент INPUT в том месте, где вы хотите привязку.
<input id="top_anchor" type="text" style="position:relative; z-index:-1; float:left">
CSS предназначен для того, чтобы заставить браузер думать, что ввод видим, но на самом деле сделать элемент невидимым дляПользователь, измените, как считаете нужным для вашего собственного случая.Z-index отобразит его ниже родительского элемента (вам может понадобиться возиться с родительским элементом, чтобы заставить его работать полностью), а примененный к нему float поможет сворачиванию ввода в его родительском элементе.Важно, чтобы мы не использовали «display: none» или «visibility: hidden», потому что браузер сочтет этот элемент визуально скрытым, а следующая часть не будет работать.
Следующая часть: в вашемjavascript, вместо того, чтобы изменять хеш или местоположение, мы находим гораздо более коварный способ заставить браузер перейти к определенной точке страницы:
document.getElementById('top_anchor').focus();
Я только что протестировал это в Firefox 8, и он работаетотличный.Грустно, что такой неискренний хак сработает, но оригинальный код с благими намерениями не сработает;но я полностью понимаю мыслительный процесс, согласно которому определенные действия должны запускаться действиями пользователя.