popstate возвращает event.state не определено

Я изучаю историю в HTML5, в этом примере (откройте консоль браузера JavaScript, чтобы увидеть ошибку) event.state.url возвращает:

Uncaught TypeError: Cannot read property 'url' of undefined

Посмотрите и помогите: http://jsfiddle.net/un4Xk/


person Caio Tarifa    schedule 22.10.2011    source источник
comment
URL больше не существует   -  person Yellow and Red    schedule 07.05.2018


Ответы (1)


event - это объект события jQuery, а не DOM.

Чтобы получить доступ к объекту события DOM, используйте event.originalEvent: http://jsfiddle.net/pimvdb/un4Xk/1/ .

var state = event.originalEvent.state;

Помните, что состояние определяется только тогда, когда в новом состоянии есть данные, поэтому оно недоступно при щелчке и последующем возврате в исходное состояние:

  1. начальное состояние
  2. ссылка на состояние 1
  3. кнопка возврата в исходное состояние (данные недоступны)

Однако он доступен при щелчке, щелчке еще раз и последующем возврате:

  1. начальное состояние
  2. ссылка на состояние 1
  3. ссылка на состояние 2
  4. кнопка возврата в состояние 1 (данные доступны)
person pimvdb    schedule 22.10.2011
comment
Не могли бы вы объяснить, что делает эта строка? var initialPop = !popped && location.href == initialURL; - person Andriy Drozdyuk; 30.01.2012
comment
@drozzy: я точно не знаю. Это была часть исходного кода @Caio Tarifa, как он разместил в вопросе. Похоже, что это предотвращает выполнение кода при первоначальной загрузке страницы, поскольку в этом случае также выполняется popstate: jsfiddle.net/un4Xk/3. - person pimvdb; 31.01.2012
comment
К сожалению, все скрипки потеряли свои струны :( - person ᴠɪɴᴄᴇɴᴛ; 20.02.2015
comment
измените ссылку jsfiddle - person Prashant Tapase; 20.03.2015