문제

Ajax 무거운 응용 프로그램이 있습니다.

http://example.com/myApp/#page=1

사용자가 사이트를 조작 할 때 주소 표시 줄는 다음과 같은 것으로 변경 될 수 있습니다.

http://example.com/myApp/#page=5

페이지를 다시로드하지 않고.

내 문제는 다음 순서입니다.

  1. 사용자는 첫 번째 URL을 북마크합니다.
  2. 사용자는 두 번째 URL이 현재 상태가되도록 응용 프로그램을 조작합니다.
  3. 사용자는 1 단계에서 생성 된 북마크를 클릭합니다.
  4. 주소 표시 줄의 URL이 변경됩니다 http://example.com/myapp/#page=5 에게 http://example.com/myapp/#page=1, 그러나 나는 변화가 발생한 것을 감지하는 방법을 모른다.

변경 사항을 감지하면 일부 JavaScript가 그에 따라 행동합니다.

도움이 되었습니까?

해결책

html5는 a Hashchange 타이머로 폴링하지 않고 URL 해시 변경 알림을 등록 할 수있는 이벤트.

모든 주요 브라우저 (Firefox 3.6, IE8, Chrome, 기타 WebKit 기반 브라우저)에서 지원하지만 여전히 이벤트를 처리하는 라이브러리를 사용하는 것이 좋습니다. 즉, 브라우저에서 타이머를 사용하여 HTML5 이벤트 및 이벤트 사용.

이벤트에 대한 자세한 내용은 참조하십시오 https://developer.mozilla.org/en/dom/window.onhashchange 그리고 http://msdn.microsoft.com/en-us/library/cc288209%28vs.85%29.aspx.

다른 팁

settimeout/interval을 사용하여 현재 주소를 정기적으로 확인하십시오.

 var oldLocation = location.href;
 setInterval(function() {
      if(location.href != oldLocation) {
           // do your action
           oldLocation = location.href
      }
  }, 1000); // check every second

위치 객체를 확장하여 바인딩 할 수있는 이벤트를 노출해야합니다.

즉:

window.location.prototype.changed = function(e){};

(function() //create a scope so 'location' is not global
{
    var location = window.location.href;
    setInterval(function()
    {
        if(location != window.location.href)
        {
            location = window.location.href;
            window.location.changed(location);
        }
    }, 1000);
})();

window.location.changed = function(e)
{
    console.log(e);//outputs http://newhref.com
    //this is fired when the window changes location
}

SWFADDRESS 이러한 유형의 물건을위한 훌륭한 도서관입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top