Если для window.location.hash установить значение null в Safari 3+, для него нужно установить значение # - PullRequest
2 голосов
/ 01 сентября 2009

Установка для window.location.hash значения NULL в Safari 3+ приводит к тому, что для него устанавливается значение #, например

window.location.hash = '#foo' => # foo

Но

window.location.hash = null => #

То же самое происходит, если вы установите пустую строку вместо нуля. Поведение определенно происходит в Safari 3 + 4, и не происходит в FF 3 или 4.

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

Ответы [ 2 ]

0 голосов
/ 01 сентября 2009

Установить хэш для пустой строки, а не ноль. Null не является допустимым значением для свойства hash (которое всегда является строкой). У меня работает в Safari 3.2.1 / Win. (Хотя по какой-то причине в Opera 10 ... но кого это волнует? Неужели иметь пустую часть хеша в конце URL-адреса - это плохо?)

0 голосов
/ 01 сентября 2009

В Safari 4 (не знаю о 3) это заставит # исчезнуть, и страница не перезагрузится.

window.location.hash = 'foo';
window.history.go(-1);

Однако, это, очевидно, испортит историю браузера. Если они нажмут вперёд, они получат http://whatever.com/#foo.

...