2010-04-28 4 views
1

나는 몇 시간 동안이 작업을 해왔다.Javascript 스크롤, XHTML Doctype, IE6 - IE8 및 관상 동맥

일부 좌표 데이터를 자바 스크립트로 가져 와서 사용자의 브라우저에서 대화식지도 (IE6 사용자의 경우 canvas 및 excanvas 사용)로 구문 분석하는 설정이 있습니다. 한 가지 문제를 제외하고는 모든 것이 잘 작동합니다. 페이지를 아래로 스크롤 한 다음지도 위로 마우스를 가져 가면 커서가 이동 한 양만큼 마우스 오버가 해제됩니다.) <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

경고 (나는 그것이 작동려고 실행 한 테스트입니다 : 사용 DOCTYPE

function getOffset(evt) { 
    var obj = document.getElementById("myCanvas"); 
    setPageTopLeft(document.getElementById("myCanvas")); 
    return [(evt.clientX - obj.pageLeft), (evt.clientY - obj.pageTop)]; 
} 

function setPageTopLeft(o) { 
    var top = 0, left = 0, obj = o; 

    alert('scrollTop w/ getElementById: ' + document.getElementById("myCanvas").scrollTop + ' scrollTop w/ .body.:' + document.body.scrollTop + ' window.pageYOffset: ' + window.pageYOffset); 

    top = document.getElementById("myCanvas").scrollTop; 
    left = document.getElementById("myCanvas").scrollLeft; 

    while (o.offsetParent) { 
     left += o.offsetLeft; 
     top += o.offsetTop; 
     o = o.offsetParent; 
    }; 
    obj.pageTop = top; 
    obj.pageLeft = left; 
} 

:

는 그대로 코드입니다. Firefox가 window.pageYOffset과 함께 작동한다는 것을 알고 있지만 IE6 + IE7 + IE8에서 작동하는 무언가가 필요합니다.

+0

"결론"이란 뜻입니까? –

+0

죄송합니다. 우스운 일을하려고 애썼다 : ( –

+0

죄송합니다. 실패합니다. :) –

답변

0

오케이, 알겠습니다. 나는 바보였다. 'document.documentElement.scrollTop'을 사용하는 것이 상당히 잘 문서화되어 있는데, 이는 'documentElement'를 현재 사용중인 요소로 대체해야한다고 생각했습니다. 실제로 말 그대로 document.documentElement.scrollTop을 사용하여 값을 가져와야합니다.

0

나는 동일한 문제가있었습니다. 원래 게시물 이후 1 년이므로 유용한 추가 정보가되기를 바랍니다.

scrollTop을 사용하는 것이 "잘 문서화되어있을 수 있습니다"하지만 IE8에 사용하고있는 window.pageYOffset 값이 없지만 Firefox, Opera, Safari 및 Chrome에서 작동하는 것을 발견했습니다 ...

'잘 문서화 된'수정 사항은 현재 Chrome 또는 Safari에서 작동하지 않습니다.

+0

jQuery에서 사용되는 원본 코드가 모든 접근자를 표준화 했으므로 적응하기가 쉽습니다. –

관련 문제