DTD 선언시 SIDEVIEW 에러 해결
이 팁은 그누보드 4.31.03 버전에서 수정된 팁입니다
아빠불당님이 쓰신 자게 글에서 (http://sir.co.kr/bbs/board.php?bo_table=cm_free&wr_id=303985) 보니까 DTD선언시 sideview 보는게 에러난다고 하시더라구요
그래서 플록님 따라 해보았지만 IE에서 안되고 그래서 떠돌아다니는 팁을 이것저것 알아보다가 이렇게 저렇게 해보다가 간단히 몇몇 function 오류라고 판결되었습니다
먼저 js/sideview.js 를 열어주시면,
getAbsoluteTop 펑션과 getAbsoluteLeft 펑션이 두개씩 존재하고 있습니다
149줄 근처에 있는 두 펑션은 냅두시고 280줄 근처에 가보시면 똑같은 펑션이 있는데 지워주세요
지우셨나요?
그러면 이제 getAbsoluteTop 펑션 내용을 봅시다
이 소스로 dtd 선언하고 IE6, FF 로 실험해보아서 모두 정상적으로 나오며
dtd 선언을 빼고 IE6에서 실험을 해도 정상적으로 나옵니다
다음버젼때 sideview.js 의 위 소스로 대체해주셨으면 합니다
** 그리고....
sideview.js의 128, 130, 132줄 끝에 + "px"; 를 붙여주세요
DTD선언으로 FF / Opera 에선 px를 선언안해주시면 값을 무시해버립니다
아빠불당님이 쓰신 자게 글에서 (http://sir.co.kr/bbs/board.php?bo_table=cm_free&wr_id=303985) 보니까 DTD선언시 sideview 보는게 에러난다고 하시더라구요
그래서 플록님 따라 해보았지만 IE에서 안되고 그래서 떠돌아다니는 팁을 이것저것 알아보다가 이렇게 저렇게 해보다가 간단히 몇몇 function 오류라고 판결되었습니다
먼저 js/sideview.js 를 열어주시면,
getAbsoluteTop 펑션과 getAbsoluteLeft 펑션이 두개씩 존재하고 있습니다
149줄 근처에 있는 두 펑션은 냅두시고 280줄 근처에 가보시면 똑같은 펑션이 있는데 지워주세요
지우셨나요?
그러면 이제 getAbsoluteTop 펑션 내용을 봅시다
원본코드
var oCurrentNode=oNode;
var iTop=0;
while(oCurrentNode.tagName!="BODY") {
iTop+=oCurrentNode.offsetTop - oCurrentNode.scrollTop;
oCurrentNode=oCurrentNode.offsetParent;
}
return iTop;
이렇게 나타나있습니다, 그러나 IE에서는 tagName 부분에서 이상하게 오류가 나더군요
그래서 다음코드로 수정하시면 오류가 해결됩니다
var oCurrentNode=oNode;
var iTop=0;
if(oCurrentNode.offsetParent){
do{
if(oCurrentNode.tagName!="body")
iTop += oCurrentNode.offsetTop - oCurrentNode.scrollTop;
}
while(oCurrentNode = oCurrentNode.offsetParent);
}
return iTop;
코드정리는 알아서 해주세요..; 에딧플러스에서 복사하고 붙여넣었떠니 이렇네요;;
var oCurrentNode=oNode;
var iTop=0;
while(oCurrentNode.tagName!="BODY") {
iTop+=oCurrentNode.offsetTop - oCurrentNode.scrollTop;
oCurrentNode=oCurrentNode.offsetParent;
}
return iTop;
이렇게 나타나있습니다, 그러나 IE에서는 tagName 부분에서 이상하게 오류가 나더군요
그래서 다음코드로 수정하시면 오류가 해결됩니다
var oCurrentNode=oNode;
var iTop=0;
if(oCurrentNode.offsetParent){
do{
if(oCurrentNode.tagName!="body")
iTop += oCurrentNode.offsetTop - oCurrentNode.scrollTop;
}
while(oCurrentNode = oCurrentNode.offsetParent);
}
return iTop;
코드정리는 알아서 해주세요..; 에딧플러스에서 복사하고 붙여넣었떠니 이렇네요;;
그리고 getAbsoluteLeft도 아래 코드로 바꿔주세요
var oCurrentNode=oNode;
var iLeft=0;
iLeft+=oCurrentNode.offsetWidth;/*
while(oCurrentNode.tagName!="BODY") {
iLeft+=oCurrentNode.offsetLeft;
oCurrentNode=oCurrentNode.offsetParent;
}*/
var iLeft=0;
iLeft+=oCurrentNode.offsetWidth;/*
while(oCurrentNode.tagName!="BODY") {
iLeft+=oCurrentNode.offsetLeft;
oCurrentNode=oCurrentNode.offsetParent;
}*/
if(oCurrentNode.offsetParent){
do{
if(oCurrentNode.tagName!="body")
iLeft += oCurrentNode.offsetLeft;
}
while(oCurrentNode = oCurrentNode.offsetParent);
}
return iLeft;
이 소스로 dtd 선언하고 IE6, FF 로 실험해보아서 모두 정상적으로 나오며
dtd 선언을 빼고 IE6에서 실험을 해도 정상적으로 나옵니다
다음버젼때 sideview.js 의 위 소스로 대체해주셨으면 합니다
** 그리고....
sideview.js의 128, 130, 132줄 끝에 + "px"; 를 붙여주세요
DTD선언으로 FF / Opera 에선 px를 선언안해주시면 값을 무시해버립니다
첨부파일
|
댓글을 작성하시려면 로그인이 필요합니다.
로그인
댓글 17개
그리고 올려둔 파일은 euc-kr 버젼입니다
신경 전혀 안쓰시나 보네,,,
감사합니다.
여태껏 사이드뷰가 나오질 않아서, 그냥 포기하고 있었는데, 이걸 보고 해결을 했습니다.
정말 고맙습니다.....눈물?ㅎㅎㅎ ㅋ
DTD 선언 head_sub.php
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="X-UA-Compatible" content="IE=8">
해결하신 분들 도와주세요.