2010-06-18 3 views
4

iframe이있는 페이지가 있습니다. iframe 내부에서 iframe 창에있는 요소의 id로 location.hash를 설정하는 코드 (변경할 수 없음)가 있습니다.iframe의 location.hash는 부모 창을 스크롤합니다.

이렇게하면 바깥 쪽 브라우저 창을 스크롤하여 원치 않는 결과를 초래하므로 창 위쪽이 iframe의 맨 위에 닿습니다. 내 애플 리케이션에 필수적인 iframe 위에 툴바가 있기 때문에 이것은 매우 성가시다.

메인 윈도우의 스크롤 위치에 영향을 미치는 location.hash 설정을 방지하는 방법이 있습니까?

내게 도움이 되겠습니까?

편집 : 내가 설명한대로 이것이 실제로 불가능한 것처럼 보입니다.

답변

1

로 preventDefault 당신이, 당신이 동적으로 화면 상단에 항상되도록 <a name='iframehash'>의 위치를 ​​이동한다 할 수있는 할 일을하지 않습니다. 그런 식으로 해시가 호출 될 때까지 이동하라는 요청이 전달되면 아무 것도 실제로 움직이지 않습니다.

하지만 preventDefault()가 작동하면 훨씬 더 좋은 해결책입니다.

+0

건배 제이미. 나도 이걸 시도해 봤어. 기본 html 파일의 맨 위에 앵커를 놓았고 iframe에 사용 된 앵커에 동적으로 이름을 설정했는데 그 중 하나도 도움이되지 않았습니다 .-( –

0

당신은 사용할 수 있습니다

event.preventDefault() 

이것은이 적용되는 요소의 기본 동작을 중지합니다.

https://developer.mozilla.org/en/DOM/event.preventDefault

+0

감사합니다. 어떤 이벤트에 첨부하겠습니까? 나는 시도했다 : window.onscroll = function (e) {e.preventDefault(); }; 부모 창과 iframe에서 을 사용하지 않아도됩니다. –

+0

iframe이 어떻게 호출되는지 - 가능한 경우 호출하는 click 이벤트에서 preventdefault를 설정하려고합니다. – matpol

+0

iframe의 일부 내부 코드 (클릭 이벤트와 관련 없음)는 location.hash = "#"+ id를 호출합니다. 내가 그 라인을 실행하거나 iframe의 코드가 중단됩니다 그것을 멈출 수 없다 .. –

관련 문제