2013-04-17 3 views
0

에 hashchange에 의해 트리거 될 때 애니메이션 실패 페이지의 위치로 다시 단순화 :스크롤 jQuery로 윈도우 나는 기본적으로 다음과 같습니다 기능을 가지고 백본

var Router = Backbone.Router.extend({ 
    routes: { 
    "": "index", 
    "foo": "foo" 
    }, 

    index: function() { 
    scroll(0); 
    }, 

    foo: function() { 
    scroll($("#foo").offset().top); 
    } 
}); 

이 페이지로드에 잘 작동 수동으로 함수를 호출하거나, pushState를 활용 (해시 조각 반대) 경로 (로드 "/ foo는"경우) .

그러나 해시 조각 경로를 사용하면 애니메이션이 실패합니다. 스크롤 위치는 애니메이션없이 즉각 변경됩니다.

해결 방법이 있습니까? 해시 태그를 변경할 때 당신이 설명하고 무엇

+0

경로가 페이지의 요소 ID와 일치합니까? – Loamhoof

+0

@Loamhoof 예, 0으로 스크롤되는'index' 경로를 제외하고, 다른 사람들은 실제로 id에 의해 요소를 찾고 'offset(). top'으로 스크롤합니다 (이것을 반영하기 위해 문제의 코드를 편집했습니다). 하지만 단순히 0으로 스크롤해도 같은 문제가 발생합니다. – numbers1311407

답변

2

사실 브라우저의 동작입니다. 즉, domain.com에서 domain.com#someId로 이동이며, 브라우저를 묻는 것과 같다 ID가 someId있는 페이지의 요소에 "초점"로 설정합니다. 그러면 창은이 요소로 이동합니다. 불행히도, 나는 이것에 대한 어떤 수정도 모른다. Modifying document.location.hash without page scrolling :

당신은 가능한 솔루션을 찾고있는 동안 내가 찾은이 토론을보고 할 수 있습니다.

+0

네, 그게 전부입니다. 그리고 지금 당신이 지적 했으니까요. 어떻게 든 나는 수년간 백본을 사용 해왔고 결코 이것에 빠지지 않았습니다. 내 dom ID와 경로가 우연히 일치하지 않는 것 같아요. – numbers1311407