웹마스터 팁

IFRAME을 마치 윈도우처럼 타이틀바로 드래그/드롭 할수 있는 팁입니다.

원리는 아주 간단합니다

일단 IFRAME이 있고

IFRAME 위에 타이틀바 레이어가 딱 붙어있죠. (마치 한몸뚱아리처럼)

물론 타이틀바레이어는 '부모'윈도가 갖고 있는놈이구요.


대략적인 흐름으로 설명 하자면 이렇습니다

[타이틀바에 마우스DOWN(버튼이눌려진상태)]
    ↓
[드래그 '가능'상태]
    ↓
[마우스MOVE]
    ↓
[마우스DOWN이벤트에서의 좌표와  마우스MOVE 후의 좌표의 차이만큼 IFRAME 의 좌표를 변경]




설명이 좀 부족해 보이지만

소스와 주석을 보시면 쉽게 알수 있을겁니다 ( 사실 대단한것도 아님 --;)


더불어 타이틀바 오른쪽에 '닫기'버튼의 기능까지 첨가하면 멋진 '윈도흉내내기'가 되겠죠.


예제: http://myhome.hanafos.com/~muldae76/iframe.html
응용: http://myhome.hanafos.com/~muldae76/index.html



<HTML>
<HEAD>
<TITLE>IFRAME 드래그하기</TITLE>

<SCRIPT LANGUAGE="JavaScript">
<!--
                
        var ifdocDrag = false;                        // 드래그 불/가 를 저장할 논리변수

        function docDrag(){                                // 마우스버튼이 눌려진 상태에서 드래그를 준비하는 함수

                ifdocDrag = true;                        // 드래그 '가능'
                originXtitle = titlebar.style.pixelLeft;        //원래의 타이틀바 X 좌표 (스타일에서의 'left')
                originYtitle = titlebar.style.pixelTop;                //원래의 타이틀바 T 좌표 (스타일에서의 'top')
                originXdoc = document.all['docFrame'].style.pixelLeft;        // 원래의 IFRAME X좌표 (스타일에서의 'left')
                originYdoc = document.all['docFrame'+ '].style.pixelTop;        // 원래의 IFRAME Y좌표 (스타일에서의 'top')
                
                tempX = self.event.clientX;                                // 이벤트(mousedown)이 발생한 지금의 마우스 X좌표
                tempY = self.event.clientY;                                // 이벤트(mousedown)이 발생한 지금의 마우스 Y좌표

                document.onmousemove = docMove;                        // mousemove 이벤트 발생시(마우스 움직일때) docMove 함수 호풀
                document.onmouseup = new Function("ifdocDrag = false");        //mouseup 이벤트 발생시(마우스버튼이 띄어질때) 드래그 '불가'로
        }

        function docMove(){                // 실제 IFRAME을 움직이는 함수

                if(ifdocDrag){                // 드래그 '가능'일때

                        titlebar.style.pixelLeft = originXtitle + self.event.clientX - tempX;        
                        // 타이틀바 X좌표는= [원래X] + [현재마우스의X] - [클릭한순간의(mousedown발생했을때의)마우스X]
                        titlebar.style.pixelTop = originYtitle + self.event.clientY - tempY;        
                        // 타이틀바 Y좌표는= [원래Y] + [현재마우스의Y] - [클릭한순간의(mousedown발생했을때의)마우스Y]

                        document.all['docFrame'].style.pixelLeft = originXdoc + self.event.clientX - tempX;
                        // IFRAME의 Y좌표는= [원래Y] + [현재마우스의Y] - [클릭한순간의(mousedown발생했을때의)마우스Y]
                        document.all['docFrame'].style.pixelTop = originYdoc + self.event.clientY - tempY;
                        // IFRAME의 Y좌표는= [원래Y] + [현재마우스의Y] - [클릭한순간의(mousedown발생했을때의)마우스Y]


                        return false;
                }
        }



//-->
</SCRIPT>


</HEAD>

<BODY ondragstart="return false" onselectstart="return false" unselectale="on" style="margin-right:0;" marginwidth=0 bgcolor="#808080">

<!-- 움직일IFRAME -->
<iframe  name="docFrame"  id="docFrame" style="position:absolute;left:123;top:71;width:794px;height:596px;z-index:1;" src="http://muldae.x-y.net/cgi-bin/tt/board/ttboard.cgi?db=freeboard" border=0 frameborder=0 scrolling=no>
</iframe>



<!-- IFRAME과 같이 움직일 타이틀바 레이어 (마치 IFRAME 과 한몸뚱아리처럼..)-->
<div id="titlebar" style="position:absolute;left:120;top:49;width:800px;height:621px;z-index:0;;">
<img src="http://myhome.hanafos.com/~muldae76/image/board_title.gif" style="position:absolute;left:0;top:0;width:800px;height:21px;z-index:0;" onmousedown="docDrag();">
<img src="http://myhome.hanafos.com/~muldae76/image/close_out.gif" style="position:absolute;left:779;top:5;z-index:2;">
<img src="http://myhome.hanafos.com/~muldae76/image/800_back.gif" style="position:absolute;left:0;top:21px;">
</div>

</bODY>
</HTML>


제목 글쓴이 날짜
붙여넣기 및 마우스 우측버튼 금지.. [3] 민이 2002.10.31
여러개의 창을 동시에 열고 ~~함목~~에 닫기 디아릭스 2002.10.30
원하는 부분에 문서나 이미지 불러들이기 디아릭스 2002.10.30
노래방 에 보면 나오는 글씨 같은 소스 臥龍先生 2002.10.27
IFRAME을 드래그해서 크롬리스처럼 사용하기 [16] 멀대 2002.10.21
숫자 세자리마다 컴마(,) 찍어주기 [1] 행복한고니 2002.10.20
단축키로 페이지이동 [17] 아벨라 2002.10.18
E-mail 추출기에 걸리지 않게 E-mail 링크하기 [2] 아이쿠 2002.10.18
필드값의 유효성을 검사하는 함수 아이쿠 2002.10.18
MSN 메신져 이모티콘을 게시판에서 사용해보자! [6] 민이 2002.10.16
공중에 이리저리 떠다니는 레이어 [2] 아벨라 2002.10.13
문자열 길이(byte)에 따라 자르기... 행복한고니 2002.10.11
크롬리스 윈도우창 띄우기 [21] 臥龍先生 2002.10.09
Select의 값을 iframe으로 넣는것입니다. [3] ZipShin 2002.10.03
엔지오 메인 화면에서 배너 클릭하면 뜨는 프롬프트 달기 [1] Eccen 2002.09.30
크롬리스 인터6.0 sp1인한 문제 수정패치 [1] 이태운 2002.09.29
페이지 맨위로 이동하는 top 버튼 [7] 조정환 2002.09.28
자바스크립트로 클릭하면 출력되는 메뉴를 만들어 보자~!!! [6] 유지호 2002.09.20
간단하고 빠른 페이지포워딩 [3] Draco 2002.09.19
asx파일 만들어 나만의 뮤직비디오 만들기 [5] zinie 2002.09.19