2011-10-20 2 views
6

location.hash을 사용하여 내 페이지의 다른 곳으로 스크롤합니다. 위치에 해시가없는 경우 제대로 작동합니다. 그러나 위치가 이미 동일한 해시 값을 가진 경우에는 작동하지 않습니다.location.hash는 크롬 및 사파리에서만 한 번 적용됩니다.

예를 들어 location.hash = 'a';<div id="a"></div>으로 스크롤됩니다. 이제 location.hrefhttp://www.example.com/test.html#a과 같습니다. location.hash = 'a';이 다시 트리거되면 창은 스크롤되지 않습니다. Chrome 및 Safari에서만 발생합니다.

해결책을 찾은 사람은 Scrolling a page using location.hash in Safari이지만 불필요한 태그를 추가하고 싶지는 않습니다.

나는 또한 location.href = '#a'을 시도했습니다. 잘 작동하지만 페이지가 다시로드 될 수 있습니다. 아무도 더 좋은 아이디어가 있습니까?

답변

14

가장 좋은 방법은 해시를 임시로 페이지에없는 값으로 대체 한 다음 액세스하려는 해시를 다시로드하는 것입니다.

location.hash = 'a'; 

// this is the function that changes the hash 
function setHash(newHash) { 
    location.hash = 'someHashThatDoesntExist'; 
    location.hash = newHash; 
} 

setHash('a'); 

트릭을 수행해야합니다.

관련 문제