2012-04-15 2 views
3

여기 좌절스러운 문제가 있습니다. 내가 jQuery를로드 블록의 내부에 스크립트에 다음을 사용 : 나는 스크롤을 통해 페이지의 상단에 고정 될 사업부를 설정하기 때문에 내가 할Chrome 및 Safari에서 window.scrollBy 해시/앵커 스크롤 전에 발생합니다.

window.scrollBy(0,-100); 

,이 라인은 그래서 보상됩니다 앵커 당신 (http : //page.html#foo)를 클릭하면 클릭해야합니다.

Firefox에서 잘 작동합니다. 브라우저가 앵커로 스크롤하기 전에로드 이벤트가 발생하기 때문에 Chrome 및 Safari에서는 그렇지 않습니다.

제안 사항?

+1

이 제안 : + A [데모] (http://jsfiddle.net/) 코드를 포함 (AJAX를 시뮬레이션 - http://doc.jsfiddle.net/use/echo.html 참조) 당신의 문제를 증명할 수 있습니다. –

+0

$ (function() {}) 이외의 코드는 이미 코드를보고 있습니다. URL에 앵커로 스크롤 할 해시가 포함되어 있으면 Chrome/Safari가 아닌 Firefox에서 페이지를 스크롤합니다. –

+0

여기 봐 : http://coasterbuzz.com/ 여기 그런 다음 주석 물건 : http://coasterbuzz.com/Scripts/CB.js 링크 같은 다음 상상해 에 http : // coasterbuzz. com/Forums/Topic/cedar-point-announces-fast-lane-on-facebook # 860269 브라우저가 앵커로 스크롤되기 전에 * 스크롤을 조정하는 코드가 * 있습니다. –

답변

1

나는 같은 문제에 직면했고, 이것이 나의 운동이다. (실제 해킹)

// Clicking on the navigation bar 
$('.navbar-nav a').click(function(e) { 
    // Blocking default clicking event 
    e.preventDefault(); 
    // Scroll to the anchored element with a delay 
    setTimeout(function() {$('#talks')[0].scrollIntoView();}, 5); 
    // Compensate the scrolling with another delay 
    setTimeout(function() {scrollBy(0, -$('#info').height())}, 10); 
} 

사파리 버그 인 것 같습니다.

+0

Webkit * 버그 - 2016 년의 사례 –

0

또한이 문제를 발견했습니다. 타임 아웃을 사용하면 0ms에도 눈에 띄는 점프가없이 작동하는 것 같습니다. 이 시도 :

window.setTimeout() 
{ 
    window.scrollBy(0, -100); 
}, 0); 
관련 문제