2012-06-11 4 views
0

URL을 newURL이라는 변수에 기록하는 setTimeout이 있습니다.URL 변경 이벤트 - JavaScript

function checkURL() { 
    var newURL = window.location; 
} setInterval(checkURL, 1000); 

내가 원하는 것은 URL이 변경 될 때 특정 기능이 실행되어야한다는 것입니다. 누군가 나 좀 도와 줄래?

+1

페이지를 다시로드하면 URL이 변경되지 않아도됩니까? – WojtekT

+0

유일한 프래그먼트 식별자가 변경되었거나 URL이 기록 API를 통해 변경되었다고 가정하면 현재 값과 이전 값을 비교하면됩니다. 나는 어려움을 여기에서 보지 못한다. 하지만 URL을 변경하면 페이지가 새로 고침됩니다. 스크립트가 종료되므로 페이지의 내용을 다시로드해야합니다. –

+0

@WojtekT : URL은 여러 가지 방법으로 변경할 수 있습니다. –

답변

4

URL의 변경 사항을 캐치하기 전에 페이지가 다시로드되지 않는 이유를 잘 모릅니다. 또한이 window.onunload

var checkURL = (function() { 
    var oldURL = location.href; 
    return function (fn) { 
     var newURL = location.href; 
     if (fn && oldURL !== newURL) { 
      fn(oldURL, newURL); 
     } 
     oldURL = newURL; 
    }; 
}()); 
+0

감사. 이것은 많은 도움이되었습니다! :) –

0

는 이전 URL을 저장하는 전역 변수를 사용하여 볼 수 있습니다. url이 변경되었는지 확인하고 일부 기능을 실행할 수 있습니다.

1

URL 변경이 해당 페이지에서 JS 스크립트의 새 실행이 될 때부터 이해합니다. "window.location"은 현재 URL을 반환하지만 스크립트에서는 데이터를 기록/등록하지 않으며 페이지간에 가변적으로 데이터를 기록합니다.