제로보드4는 공식적으로 더 이상 개발되지도 배포되지도 않습니다.
제로보드4를 사용하기 위한 팁보다 제로보드4를 안전하고 무사히 다른 툴로 이전하는 팁들을 게재해주시면 감사하겠습니다.
시간이 오래 지난 만큼 오래된 프로그램은 보안 및 사용성에 있어 문제가 많으니 이해 바랍니다.

./files/attach/images/138/851897/z_layer.png
*원문 페이지: http://youngwhan.com/bbs/zboard.php?id=y_zero&page=1&page_num=20&select_arrange=headnum&desc=&sn=off&ss=on&sc=on&keyword=&no=7&category=1


Introduction

Zeroboard 에서 Firefox 브라우저로 보면, 위의 캡쳐화면과 같이 이름 클릭시에 나타나는 Layer(레이어)가 뜨지 않는다. 이유는 zeroboard 가 W3C 규칙을 제대로 지키고 있지 않는데에 있다. 이를 해결 하기 위해서는 zeroboard의 소스코드의 몇 부분을 건드려 주어야 한다.

다음은 수정되어야 할 코드에 대해서 설명한다.

* 여기서는 zeroboard가 설치된 디렉토리가 bbs라고 가정한다.

1. bbs/script/script_zbLayer.php
        
-------------------------------------------------------------------

        function ZB_layerAction(name,status[T_y_h_yellow],myEvent[/T]) {
                [T_y_h_yellow]var obj=document.getElementById(name);[/T]
                var _tmpx,_tmpy[T_y_h_yellow], _marginx, _marginy;[/T]
                _tmpx = [T_y_h_yellow]myEvent.[/T]clientX + parseInt(obj.offsetWidth);
                _tmpy = [T_y_h_yellow]myEvent.[/T]clientY + parseInt(obj.offsetHeight);
                _marginx = document.body.clientWidth - _tmpx;
                _marginy = document.body.clientHeight - _tmpy;
                if(_marginx < 0)
                        _tmpx = [T_y_h_yellow]myEvent.[/T]clientX + document.body.scrollLeft + _marginx ;
                else
                        _tmpx = [T_y_h_yellow]myEvent.[/T]clientX + document.body.scrollLeft ;
                if(_marginy < 0)
                        _tmpy = [T_y_h_yellow]myEvent.[/T]clientY + document.body.scrollTop + _marginy +20;
                else
                        _tmpy = [T_y_h_yellow]myEvent.[/T]clientY + document.body.scrollTop ;
                obj.style[T_y_h_yellow].left=[/T]_tmpx-13;
                obj.style[T_y_h_yellow].top=[/T]_tmpy-12;
                if(status=='visible') {
                        if(select_obj) {
                                select_obj.style.visibility='hidden';
                                select_obj=null;
                        }
                        select_obj=obj;
                }else{
                        select_obj=null;
                }
                obj.style.visibility=status;
        }


--------------------------------------------------------------------

위의 소스중에 노란색으로 Highlight 된 곳과 같이 수정하도록 한다. (원래 소스와 위의 소스중에 다른부분을 노란색으로 Highlight 했다.)


2. bbs/view.php

화일을 열고, "ZB_layerAction" keyword로 찾는다. 다음을 참고하기 바란다.

대략 98행, $prev_name 변수 수정

        
                        $prev_name = "<span $show_ip onMousedown="ZB_layerAction('zbLayer$_zbCheckNum','visible'[T_y_h_yellow],event[/T])" style=cursor:pointer>$prev_name</span>";

        


역시 노란색으로 highlight 처리된 곳을 처리한다.

대략 141행, $next_name 변수 수정

        
                        $next_name = "<span $show_ip onMousedown="ZB_layerAction('zbLayer$_zbCheckNum','visible',event)" style=cursor:pointer>$next_name</span>";
        


대략 290행, $comment_name 변수 수정

        
                                $comment_name = "<span $show_ip onMousedown="ZB_layerAction('zbLayer$_zbCheckNum','visible'+ '+ ',event)" style=cursor:pointer>$comment_name</span>";
        


3. bbs/include/list_check.php

대략 333행, $name 변수 수정

        
                $name = "<span onMousedown="ZB_layerAction('zbLayer$_zbCheckNum','visible', event)" style="cursor:pointer;">$name</span>";
        


4. bbs/script/script_zbLayer.php

이 화일은 1번에서 수정했던 파일이다. (여기 굳이 다시 쓰는 이유는 1번 수정된것으로 인해 2,3,4번이 바뀌어야 하는 당위성에 있다.)

대략 67행, printHeader 변수 수정


                var printHeader = "<d i v  id='"+name+"' style='position:absolute; left:10px; top:25px; width:127; height: "+printHeight+"; z-index:1; visibility: hidden' onMousedown=ZB_layerAction('"+name+"','hidden',event)><table border=0><tr><td colspan=3 onMouseover=ZB_layerAction('"+name+"','hidden',event) height=3></td></tr><tr><td width=5 onMouseover=ZB_layerAction('"+name+"','hidden',event) rowspan=2></td><td height=5></td></tr><tr><td><table style=cursor:pointerborder='0'+ ' cellspacing='1' cellpadding='0' bgcolor='black' width=100% height=100%><tr><td valign=top bgcolor=white><table border=0 cellspacing=0 cellpadding=3 width=100% height=100%>";

*여기서 div tag가 먹혀서 한칸씩 띄웠습니다. 바로 위의 소스를 카피하실때, div로 바꿔주시기 바랍니다.

대략 68행, printFooter 변수 수정

        
                var printFooter = "</table></td></tr></table></td><td width=5 rowspan=2 onMouseover=ZB_layerAction('"+name+"','hidden',event)></td></tr><tr><td colspan=3 height=10 onMouseover=ZB_layerAction('"+name+"','hidden',event)></td></tr></table>
";

        


Source 설명

1번 파일의 첫번째 highlight된 "document.getElementById(name);" 부분이 ID를 읽어오는 표준이다. zeroboard는 document.all[name] 과 같이 처리했으나, 이는 IE만 알아듣는 것으로 표준이 아니다.

또한 browser에 event object 는 인자를 통해 반드시 전달해 주어야, event 에 관련한 Property를 처리할 수 있다. zeroboard에서는 event.clientX 와 같이 직접 이용하여 마우서의 현재 x 위치를 읽어 오지만, 이것은 브라우저가 지원하느냐 그렇지 않느냐에 따라 실행이 되기도하고, 그렇지 않기도 한다. 따라서, event 관련한것을 쓰고 싶으면, event를 인자로 넘겨주는 방법으로 javascript를 처리해야 한다. 그래서 ZB_layerAction 함수에 myEvent라는 인자를 받아들이도록 했고, 이를 위해 ZB_layerAction를 부르는 모든 소스를 수정해야 했던 것이다. ZB_layerAction를 부르는 소스는 필자가 검색한 결과로는 위의 세가지 뿐이었다.

이로써, 어떤 브라우저에도 영향을 받지 않고도 위에 캡쳐된 화면과 같이 이름클릭했을때 뜨는 레이어 (Layer)의 처리가 가능해 졌다.

* 위의 설명중에 노란색으로 Highlight 된 부분은 여기게시판의 특성상 표시 할 수 없었으므로, 혹시 보고 싶으신 분은 원문 ( http://youngwhan.com/bbs/zboard.php?id=y_zero&page=1&page_num=20&select_arrange=headnum&desc=&sn=off&ss=on&sc=on&keyword=&no=7&category=1 )을 참고하시기 바랍니다.

[레벨:4]바보앙마

2005.08.11 14:22:12
*.120.180.198

헉... Ryan 님 고맙습니다.^^;;;

[레벨:2]item4

2005.08.21 09:03:07
*.156.69.114

diary같은 스킨 사용시에는 코맨트 추출이 따로 분리되어 추출되므로 그부분은 스킨을 알아서 고쳐주셔야될거같습니당 [......;;;]

[레벨:2]Ryan

2005.08.10 01:10:59
*.205.59.197

네, 바보앙마님, 잘 되네요. 사이트 이쁘군요. ^^;

[레벨:4]바보앙마

2005.08.09 11:21:14
*.120.180.198

헉.. 저는 원본 링크 따라가서 그 대로 수정했는데.. 파폭에서 제대로 레이어 나옵니다.
http://sojeong.com/<- 확인해보세여.. 은근히.. 홈페이지 홍보?ㅡㅡ;

[레벨:11]대류

2005.08.05 09:40:59
*.244.130.224

야~ 나중에 적용해봐야겠네요.....
제로보드도 표준화에 관련한 정보가 많이 올라왔으면하는 바람입니다.

[레벨:1]김건엽

2005.08.05 13:38:00
*.69.194.82

아~ 좋은 팁입니다..
전 페도라 코어4 기반에 불여우모질라를 쓰고 있어서..
엔지오나 다른 제로보드 기반 사이트 들어가면
레이어가 안떠서.. 방법을 찾고 있었는데 ;;

[레벨:2]daybreaker

2005.08.06 00:36:00
*.248.233.144

덤으로, cursor:hand라고 된 곳을 모두 cursor:pointer로 고치시면 마우스 포인터도 손가락 모양으로 잘 나오게 됩니다.
그나저나,, 저도 방금 이 작업 혼자 알아내느라 무지하게 고생해서 성공했더니만, 글을 쓰려고 보니 이미... OTL OTL OTL...
어떻게 변수 이름만 다르고 거의 똑같은 겁니까?? ㅠㅠ;;; (전 myEvent 대신 e로 썼죠.. 그리고 obj.style.posLeft를 obj.style.left로 고쳐야 한다는 걸 알아내는 데 시간이 좀 걸렸죠... 그리고 가장 고생했던, list_chekc.php에 $name 설정 코드가 있다는 사실도...)

어쨌든 추천 한 방 날리고 갑니다...

[레벨:11]마니

2005.08.06 05:09:47
*.148.103.145

아 이거 저도 해봐야겠네요.. 추천!

[레벨:1]안건형

2005.08.06 12:24:09
*.79.57.210

아... 왜 안되죠... IE에서는 페이지에 오류가 있다고 하고, 불여우에서도 안되네요.
,와 .이 바뀐 것은 오타인 듯 한데, list_check에 style=\"cursor:pointer;\">에서 \ " ;를 넣어야 되는 건가요?

[레벨:2]Ryan

2005.08.06 13:05:26
*.16.41.131

안건형님, 제 사이트에서 똑같은 질문 주셨죠? 혹시 몰라 여기에 똑같은 답변을 드립니다.
----------------------------------
글쎄요. 왜 안될까요. 혹시 3번에서 333행이 아니고, 아마도 님께서 가진 소스에서는 다른 행일 수 있습니다. 제가 가진 소스에서는 그렇게 길어졌는데, 원래소스에는 그렇게 길지 않을 것입니다.
고쳐야 할 부분을 가져오면,

// 폼메일을 사용하고 관련메뉴가 생성이 되면 레이어오픈
if($_zbCount&&$setup[use_formmail]) {
$name = "< s p a n onMousedown=\"ZB_layerAction('zbLayer$_zbCheckNum','visible', event)\" style=\"cursor:pointer;\">$name< / s p a n >";
// 폼메일을 사용안할 경우 무조건 메일링크
} else {

위와 같은 부분에서 $name = 이라고 되어 있는 부분을 위의 3번과 같이 바꿔주시면 됩니다. list_check.php를 여시고, 위와 같이 되어 있는 부분을 찾으셔서 $name을 바꿔보시지요. 그래도 안되시면, 또 연락주세요. ^^;

* 위에서 span 태그가 먹혀서 스페이스를 사이에 두었습니다. span을 제대로 쓰시고 해보시기 바랍니다.
----------------------

[레벨:1]안건형

2005.08.06 13:13:05
*.79.57.210

앗.. 신속한 답변 감사드립니다. 시도해 보겠습니다.
커서가 hand로 바뀌었다 point로 바뀌는 건 되고 layer만 뜨지 않는게 제 사이트의 문제입니다.

[레벨:1]이규웅

2005.08.06 13:29:12
*.154.116.72

완벽하게 표준에 맞게 수정하려면 다른 파일들을 더 뜯어고쳐야하긴 하지만...
td에 height나 border같은 속성들은 style로 만들거나 아예 css로 빼버리고
자바스크립트에서 태그 닫으려면 </td>가 아니라 <\/td>라고 써야합니다.

[레벨:1]안건형

2005.08.06 13:25:20
*.79.57.210

음.. 마찬가지네요.. zb_layerAction 펑션이 어차피 그 줄 밖에 없으니, 고친 부분은 제대로 찾은 것 같습니다만...
현재 제로보드 4.1 pl5을 수정없이 사용중입니다.

[레벨:2]Ryan

2005.08.06 14:17:44
*.16.41.131

버젼이 달라서 문제인가요? 저는 제로보드 4.1 pl7을 쓰고 있거든요.

제 사이트에 오셔서 확인하셨겠지만, 제대로 동작하죠? FF를 썼을 경우에 말이죠.

제가 소스를 본다면, 더 좋겠지만, 제가 말씀 드릴 수 있는 것은,
ZB_layerAction 을 수정해야 하고, 여기에 인자를 받아들였으므로, zeroboard 전체에서 ZB_layerAction 함수를 쓰는 곳은 전부 바꾸어야 한다는 것입니다. 그리고, 전체 소스중에서 cursor:hand 도 cursor:point 로 바꾸어야 하구요.

위와 같이 하실수 있으시다면, 더 좋겠는데요. 해결 되었으면 좋겠습니다.

[레벨:1]안건형

2005.08.06 15:14:01
*.79.57.210

아.. FF 문제는 아니군요... 제로보드 버전업을 해보겠습니다. 답변 감사합니다. ^^

[레벨:2]베지타

2005.08.06 16:28:05
*.232.144.181

4.1 pl7을쓰고 있습니다.
잘됩니다. 다만 한가지 않되는것은 레이어에서 링크에 손모양(마우스 커서)이 먹히지 않는데..
==
zeroboard 전체에서 ZB_layerAction 함수를 쓰는 곳은 전부 바꾸어야 한다는 것입니다. 그리고,
전체 소스중에서 cursor:hand 도 cursor:point 로 바꾸어야 하구요.
==
위 글처럼 해야 하는지요...
몇번이고 확인해서 틀린부분은 없다고 생각하는데.. 잘 모르겠네요..
레이어는 잘 뜹니다.

[레벨:2]Ryan

2005.08.06 16:42:49
*.16.41.131

베지타님:

우선은 제가 초반에 POSTING 한 그대로도 저는 잘 동작했었는데요, 초반에서도 cursor:hand 가 보이죠? 그것도 모두 pointer 로 바꾸어 주어야 할 것 같습니다. 그럼.

(point 아닙니다. cursor:pointer 로 바꾸셔야 합니다. 버전문제관련 답글에서 오타가 있었네요.)

[레벨:2]베지타

2005.08.06 18:01:57
*.232.144.181

Ryan님
감사 합니다.
완벽하게 잘 됩니다. 이젠 메인 이미지 불러오는거 고쳐야 겠네요..^^*

[레벨:11]대류

2005.08.06 18:48:08
*.244.130.224

앞으로도 ff 호환과 관련된 팁이 많이 올라왔음 좋겠네요

[레벨:2]Ryan

2005.08.06 23:22:35
*.18.125.71

cursor:pointer 에 관련한 초기 버전의 글을 수정하였습니다.

감사합니다.

[레벨:1]안건형

2005.08.07 11:25:13
*.79.57.210

pl7로 버전업한 후 재시도했지만 여전히 안됩니다. YoungWhan님 홈페이지는 잘되니 한때 의심했던 FF에 깔아놓은 수많은 플러그인들(특히 NoScript같은 것)의 문제도 아니군요. 스킨을 바꿔도 마찬가지구요. 당분간은 포기하고 그냥 IEView플러그인을 쓰겠습니다.
친절한 답변 주셔서 감사합니다. ^^

[레벨:2]Ryan

2005.08.07 20:01:41
*.16.43.18

아쉽군요. 안건형님. 뭐가 하나 문제가 되고 있는 것 같은데, 제 홈페이지는 잘 된다고 하니까, FF는 문제가 아니고, 결국 가지고 계신 zeroboard 소스중에 어느 부분이 잘못 된 듯 합니다만....그것만 찾아내면 될텐데요...위의 베지타님도 잘 되시는 것 보아서, 잘만 찾으면 될것 같은데...
나중에 시간 되실때 한 번 더 찾아 보세요. ^^;

그럼, 수고하세요.

[레벨:2]+_+

2005.10.23 04:10:38
*.211.66.38

잘됩니다. :) ^_^

[레벨:3]♧미니™

2007.03.31 19:18:05
*.235.66.47

고맙습니다. 잘 됩니다.

[레벨:3]♧미니™

2007.04.01 11:29:13
*.235.66.47

그런데 레이어에서 홈페이지를 클릭해도 반응이 없습니다.
익스에선 반응이 없고, FF에선 에러가 있고요. 확인을 해 봐 주세요.

[홈페이지 ==> 이것 클릭했을 때
메일보내기
쪽지보내기...]

[레벨:2]닭발은세개

2008.08.25 10:41:02
*.40.31.212

좋은 팁입니다. 유일한 문제점은??? ㅋㅋ 오히려 이렇게 하니 브라우저마다 다 잘 뜨지만 익스플로러만 레이어가 안사라지는 문제점이... 익스플로러 6.0 서팩1 입니다. ㅎㅎ 좋은걸 해결했다 싶더니만.. 이런 문제가 ㅋㅋ
List of Articles
번호 제목 글쓴이 날짜 조회 수
3789 글쓰기 모드에서 카테고리 자동 선택하기 [9] [레벨:1]쥐도령 2005-08-10 4815
3788 질문 게시판에 있어야 될 답변 만족도 표시하기 !! file [11] [레벨:8]웹스터디 2005-08-10 2230
3787 슈팅스타님의 네이버까페 게시판스킨 수정(레벨아이콘,카테고리 출력, 데이... file [7] [레벨:2]자두나무 2005-08-10 5046
3786 아이디&비밀번호 찾기 클릭시 setup파일을 수정해줘야 된다??? [3] [레벨:2]미니온 2005-08-02 4754
3785 게시판 내용보기 권한 없을 경우 경고창 띄우기 (최근게시물에서도 작동) [13] [레벨:3]꿈바라기 2005-08-07 4377
3784 초보의 팁!!(사진 올릴때...)이것두 팁인가?? [5] [레벨:1]김규찬 2005-08-06 3148
3783 쪽지에 HTML 적용, 자바스크립트 차단, 허용태그, 태그로만 작성시 메세지 ... [12] [레벨:5]柔月光 2005-08-06 428
3782 자동으로 유령회원 정리하기 [4] [레벨:1]퍼미션 2005-08-05 4424
3781 https프로토콜에도 링크생성하기(;) [레벨:8]플로렐라 2005-08-05 2956
» Firefox(불여우)에서 이름클릭시 Layer(레이어)뜨게 하기 file [26] [레벨:2]Ryan 2005-08-05 5020
3779 내용(memo) 크기 16MB 로 늘리기 [5] [1] [레벨:2]Ryan 2005-08-04 2966
3778 [정보] 1970년 완전 해결법 [4] [레벨:3]k2love 2005-08-04 4702
3777 W3C 표준 HTML 검사. [10] [레벨:2]Ryan 2005-08-03 2666
3776 아이디의 최대 입력 갯수는 20글자입니다. [2] [레벨:6]아가페 2005-08-03 2116
3775 제로 보드 RSS 피드제공하기 [7] [레벨:1]지율 2005-08-01 823
3774 공지사항글에는 코멘트 못달게 하기 [12] [레벨:1]thisbe 2005-07-29 218
3773 새쪽지 새창으로 뜨게 하는 방법 [7] [레벨:2]황효복 2005-07-29 6388
3772 회원가입에서 회원이름에 필터링을 적용 [9] [레벨:20]영진 2005-07-28 4364
3771 [1차수정]광고,로봇글 제한하기[이미지 코드사용] file [53] [레벨:20]토토루 2005-07-27 13073
3770 간단하게 사용권한 표시 [2] [레벨:18]하우 2005-07-27 3787