On - window.location.hash - Изменить?

// используем системное время как начальное значение для получения хорошего случайного числа

   Random random = new Random(System.currentTimeMillis());
              long x;
             do{
                x=random.nextLong();
             }while(x<0 && x > n); 

// Loop, пока не получим число больше или равно 0 и меньше n

542
задан RPichioli 3 October 2016 в 21:19
поделиться

7 ответов

Единственный способ действительно сделать это (и то, как 'reallysimplehistory' делает это), путем установки интервала, который продолжает проверять текущий хеш и сравнивать его с тем, чем это было прежде, мы делаем это и позволяем подписчикам подписаться на измененное событие, которое мы запускаем, если хеш изменяется.. не прекрасный, но браузеры действительно не поддерживают это событие исходно.


Обновление для хранения этого ответа новым:

При использовании jQuery (который сегодня должен быть несколько основополагающим для большинства), затем, хорошее решение состоит в том, чтобы использовать абстракцию, которую jQuery дает Вам при помощи его системы событий для слушания hashchange событий на объекте окна.

$(window).on('hashchange', function() {
  //.. work ..
});

Хорошая вещь здесь - Вы, может написать код, который не должен даже волноваться о поддержке hashchange, однако ДЕЙСТВИТЕЛЬНО необходимо сделать некоторое волшебство в форме несколько менее известной функции jQuery специальные мероприятия jQuery.

С этой функцией Вы по существу добираетесь для выполнения некоторого кода установки для любого события, в первый раз, когда кто-то пытается использовать событие всегда (такое как привязка к событию).

В этом коде установки можно проверить на собственную поддержку браузера и если браузер исходно не реализует это, можно установить единственный таймер, чтобы опросить относительно изменений и инициировать событие jQuery.

Это полностью развязывает Ваш код от необходимости понять эту проблему поддержки, реализация специального мероприятия этого вида тривиальна (для получения простых 98% рабочая версия), но почему делают это, когда кто-то еще уже имеет.

611
ответ дан 22 November 2019 в 22:20
поделиться

Достойная реализация может быть найдена по http://code.google.com/p/reallysimplehistory/. Единственное, (но также и) проблема и ошибка, которую это имеет: в Internet Explorer, изменяющем хеш местоположения вручную, сбросит всю стопку истории (это - проблема браузера, и это не может быть решено).

Примечание, Internet Explorer 8 действительно имеет поддержку "hashchange" события, и так как это становится частью HTML5, который можно ожидать, что другие браузеры схватят.

6
ответ дан 22 November 2019 в 22:20
поделиться

HTML5 указывает a hashchange событие. Это событие теперь поддерживается всеми современными браузерами. Поддержка была добавлена в следующих версиях браузера:

  • Internet Explorer 8
  • Firefox 3.6
  • Chrome 5
  • Safari 5
  • Opera 10.6
286
ответ дан 22 November 2019 в 22:20
поделиться

Есть много уловок для работы с History и window.location.hash в браузерах IE:

14
ответ дан 22 November 2019 в 22:20
поделиться

Я использовал плагин jQuery, HUtil, и написал YUI Историю как интерфейс поверх него.

Проверьте это один раз. Если вам нужна помощь, я могу помочь.

0
ответ дан 22 November 2019 в 22:20
поделиться

В Firefox с версии 3.6. См. window.onhashchange .

12
ответ дан 22 November 2019 в 22:20
поделиться

Еще одна замечательная реализация – это История jQuery, которая будет использовать встроенное событие onhashchange, если оно поддерживается браузером, в противном случае будет использоваться iframe или интервал, соответствующие браузеру, чтобы гарантировать, что все ожидаемая функциональность успешно эмулируется. Он также предоставляет приятный интерфейс для привязки к определенным состояниям.

Еще один проект, заслуживающий упоминания, — это jQuery Ajaxy, который в значительной степени является расширением для истории jQuery, чтобы добавить ajax в смесь. Когда вы начинаете использовать ajax с хешами, это становится довольно сложным!

1
ответ дан 22 November 2019 в 22:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: