2009-09-02 5 views
1

Я стараюсь, чтобы мой сайт правильно ответил на кнопку «Назад». Я сохранил этот хэш того, что я хочу, но я не знаю, как использовать jQuery для определения того, когда изменяется хеш. Это не .ready(), потому что страница не перезагружается. Что я использую?JQuery - подскажите, когда меняется хэш?

Edit для немного ясности:

Я использую IFRAME, поэтому я не могу сказать, когда кто-то нажимает на ссылку. Он находится на одном субдомене, поэтому я могу видеть его путь к файлу, и я сохраняю его, чтобы вы могли добавлять закладки. К сожалению, сохраняя его как хеш, моя задняя кнопка теперь не перезагружается, что не позволяет перезагрузить iframe, поэтому моя задняя кнопка по существу сломана. Если бы был способ узнать, когда изменится URI, я могу проверить его на адрес iframe и изменить его, если они не совпадают.

Все, что мне нужно, это проверить, изменился ли URI. Есть ли .change() для URI? Что-то в этом роде?

ответ

3

После того, как документ готов, вы изучите хэш и соответствующим образом измените страницу.

Я не знаю, крючок для JQuery, чтобы быть в состоянии сказать, когда хэш изменяет

Вы можете перехватывать событие нажатия вашего хэша Якоря и реагировать соответствующим образом, а не к ожиданию А « hash изменил "событие (которого не существует).

Некоторые подходы создают событие «хеш изменилось», проверив window.location.hash по таймеру.

+0

Я сделаю таймер, если все остальное не получится, спасибо! Позвольте мне посмотреть, есть ли у кого-то способ, который не связан с таймером. – Ethan

4

Вы можете попробовать History Event плагин.

+0

Они тоже используют время. Наверное, это то, что я сделаю. – Ethan

0

Там is'nt в buitin способ следить за изменения хэша, в Firefox можно использовать метод часов, но, насколько я знаю, это разве по умолчанию, так что вы можете взломать его писать что-то вроде (см ниже)

function setWatchHashChanges(functionObject) 
{ 
    if(window.location.watch) 
    { 
     window.location.watch('hash', function(e){functionObject(e);return e;}); 
    } else { 
     if(!setWatchHasnChanges.hash) 
     { 
      setWatchHasnChanges.hash = window.locaton.hash; 
     } else { 
      setInterval(function(){ 
      if(setWatchHasnChanges.hash!== window.locaton.hash) 
      { 
       setWatchHasnChanges.hash = window.locaton.hash; 
       functionObject(setWatchHasnChanges.hash); 
      } 
     }, 100); 
    } 
} 
1

Вы должны взглянуть на solution Ben Nadel, который связан с событиями, не связанными с DOM.

2

Бен «ковбой» Alman написал кросс-платформенный плагин для хэша изменения

http://benalman.com/news/2010/07/jquery-hashchange-event-v13/

Я не знаю, если вы используете его внутри фрейма или что, но если вы должны были использовать его вне iframe это было бы как

$(function(){ 
    $(window).hashchange(function(){ 
     //Insert event to be triggered on has change. 
     changeIframeContent(window.location.hash); 
    }) 
})