Возможные проблемы установки window.location.hash

У меня есть код javascript, который в какой-то момент устанавливает window.location.hash в определенную строку. Это отлично работает в Firefox 3, но я хочу знать, сработает ли я с этим позже, т.е. Это кросс-браузерное решение (включая IE6)?

Кроме того, я использую ReallySimpleHistory. Будет ли это испортить его внутреннее состояние?

Спасибо

Ответ 1

window.location.hash существует с тех пор, как JavaScript был представлен в Netscape Navigator 2 еще в 1995 году. Сначала он поддерживался Microsoft в Internet Explorer 3 в 1996 году. Я думаю, вы можете быть достаточно уверенным, что каждый браузер, поддерживающий JS, поддерживает его.

С быстрым взглядом на источник, похоже, что ReallySimpleHistory довольно широко использует это свойство, поэтому вы можете его разбить. Вместо этого вы можете использовать его метод add(newLocation) (который работает, установив window.location.hash).

Ответ 2

Получить:

 var hash = location.hash.slice(1);

Set:

 location.hash = '#' + 'string';

Ответ 3

Старый поток я знаю, но window.location.hash также зависит от размера. Если вы передаете большие объемы данных и хотите сохранить состояние в хэше, вы можете столкнуться с некоторыми проблемами.

IE предоставит вам ошибку: SCRIPT5 - Access denied., если вы попытаетесь присвоить хэш, превышающий предел что очень полезно.

Просто пища для размышлений.

Ответ 4

Все "современные" (a.k.a A-Graded) браузеры позволяют устанавливать хеш и не перезагружать страницу при этом. Те, которые перезагружают страницу, относятся к более старым, например Safari 2.0.4 и Opera 8.5x.

Смотрите мой пост Usenet на comp.lang.javascript, где я объясню это немного подробнее.

Также обратите внимание, что HTML5, наконец, указывает, что хэш-сеттер должен изменить фактический хэш, но не перезагружать страницу.

Ответ 5

Настройка window.location.hash отлично работает в IE6 и IE7.

В некоторых случаях чтение window.location.hash в IE6 сразу после того, как набор вернет старое значение, но браузер успешно установил хэш. Пример:

alert(window.location.hash);
window.location.hash = '#newHash';

/* Sometimes, it will return the old value,
   I haven't figured out why it does that, and
   it rather rare. */
alert(window.location.hash);

Если вы просто используете его для его установки, вам не должно возникать никаких проблем.