2016-07-14 2 views
1

IE10에서 문서 점프가 발생하는 것을 방지하기위한 방법이 있습니까? 아래 코드는 Chrome과 Firefox를 모두 해결합니다. 참고로 IE10에서 location.hash "jumping"을 방지합니다.

if (location.hash) { 
    setTimeout(function() { 
    window.scrollTo(0,0); 
    }, 1); 
} 

, 나는 또한하지만 운, jQuery의 $(window)뿐만 아니라 이것을 시도했습니다.

+3

왜 페이지를 스크롤하지 않으려면 해시를 사용 하시겠습니까? – epascarello

+0

다른 페이지의 특정 탭에 연결 중입니다. 사용자가 해당 탭 내부의 콘텐츠에 액세스하려고하지만 탭/해시가있는 페이지를 강제로 클릭하지 않고 (왼쪽 탐색에서 페이지 아래쪽으로). 내용은 해시가 살아있는 곳에서부터 시작됩니다. – laurendorman

답변

0

로렌과 회의 후, 우리는 결정 : IE 10에서

  • window.scrollTo(0,0) 작품을 개발자 도구를 열고 다음 명령을 실행하여. 그래서 우리는 코드가 독립적으로 작동한다는 것을 알았지 만, 우리가 잘못하고있는 다른 것이 있거나 페이지에 코드가있어 페이지가 맨 위로 가려는 것을 방지했습니다.
  • 빠른 해킹으로 경쟁 조건인지 확인하기 위해 간격을 1 밀리 초에서 2000 밀리 초로 증가 시켰습니다. 이 으로 처리되었지만 페이지 깜박임/점프로 인해 바람직하지 않습니다. 플리커 효과를 최소화하기 위해 2000 밀리 초에서 더 낮은 값으로 값을 낮추었습니다.
  • 페이지를 다시로드하지 않고 다른 경로의 페이지로 처음 이동했을 때만 페이지가 맨 위로 스크롤되지 않습니다. 페이지의 다른 JavaScript가 다른 논리 경로를 야기 할 수 있습니다.

생각은 :

  • 아마도에만 IE10에서 자바 스크립트 실행을 느리게로 인해 일어났다. 다른 브라우저는 JavaScript를 더 빨리 구문 분석하고 해석합니다.
  • 스크롤은 앵커 대신 쿼리 매개 변수를 통해 제거 될 수 있지만 코드가 리팩토링되고 너무 예쁜 URL 경로가되지는 않습니다. 즉 https://<url>?tab-name=TabNameToSelect 스크롤은 서버 측 또는 클라이언트 측 라우팅을 통해 제거 될 수 있지만, 더 큰 개발 노력을 필요로 ... 루트가 {controller}/{action}/{tab-id} 또는 {controller}/{action}/{item-id}/{tab-id}

빠른 수정 솔루션 같은 패턴을 가질 수

  • :

    // quick and dirty franken'fix 
    if (location.hash) { 
        setTimeout(function() { 
        window.scrollTo(0,0); 
        }, 250); // increment interval to "prevent" race condition 
    } 
    
  • 관련 문제