JavaScript로 주소 표시 줄 변경을 어떻게 감지 할 수 있습니까?
-
20-09-2019 - |
문제
Ajax 무거운 응용 프로그램이 있습니다.
http://example.com/myApp/#page=1
사용자가 사이트를 조작 할 때 주소 표시 줄는 다음과 같은 것으로 변경 될 수 있습니다.
http://example.com/myApp/#page=5
페이지를 다시로드하지 않고.
내 문제는 다음 순서입니다.
- 사용자는 첫 번째 URL을 북마크합니다.
- 사용자는 두 번째 URL이 현재 상태가되도록 응용 프로그램을 조작합니다.
- 사용자는 1 단계에서 생성 된 북마크를 클릭합니다.
- 주소 표시 줄의 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 이러한 유형의 물건을위한 훌륭한 도서관입니다.
제휴하지 않습니다 StackOverflow