<html>
<body onresize="javascript:centerWindow();" onload="centerWindow();">
<script language="JavaScript">
<!--
function centerWindow() {
var xMax = document.body.clientWidth, yMax = document.body.clientHeight;

var xOffset = (xMax-200)/2+20, yOffset = (yMax-150)/2+40;
//중심에서 오른쪽으로 20, 아래로 40픽셀에 항상 위치하는 레이어
var divMenu = document.all['Layer1'].style;
divMenu.top = yOffset;
divMenu.left = xOffset;
}
//centerWindow();
//-->
</script>

<p><div id="Layer1" style="position:absolute; left:200px; top:80px; width:200px; height:150px;
z-index:1">
<table width="200" border="0" cellspacing="0" cellpadding="0">
<tr>
<td align="center" bgcolor=#FFFFFF style="border:#808080 1px solid;" height=150>

<span style="font-family:굴림; font-size:9pt">항상 중심에 뜨는 <br>
레이어 샘플입니다.</span><br>
<img src="http://www.google.co.kr/images/logo_sm.gif" width="150" height="55" alt="배너">
</td>
</tr>
</table>
</div>
</body>
</html>
2007/11/22 15:17 2007/11/22 15:17
<script language="javascript">
<!--

var kzone_gift=new Array();
var random_val=new Array();

var imgURL1=
"http://img.messenger.hanmail.net/images/messenger4/mileagegift/200509/";




var imgURL2= ".jpg";
var PRESENTLIST= 16;

for(var i=0; i<PRESENTLIST; i++){
var imgCNT= i + 1;
var temimg= "";
//if(i==5)
// temimg= "_1";
kzone_gift[i]= imgURL1 + imgCNT + temimg + imgURL2;
}


var swidth = 149
var sheight = 141
var show_items = 2

var stop_time = 1500 // 아이템 동작 텀 (1초 = 1000)
var sspeed = 20 // 아이템이 움직이는 시간
var sstep = 50 // 아이템이 픽셀 이동 간격

// 내부 변수
var new_item = show_items
var sstep_tmp = sstep
var only_one = 1;

function gift_left(){
sstep=100;
setTimeout("gift_left0()", 1000)
}

function gift_left0(){
sstep=5;
}


function random_start()
{
var len = kzone_gift.length;
if( only_one == 1){
for (i=0; i<len; ){
rand = parseInt(Math.random() * len );
// rand = i;
len2 = random_val.length;

for (j=0; j<len2 ; j++){
if(random_val[j] == rand)
break;
}
if( j == len2){
random_val[i] = rand;
i++;
}
}
only_one=2;
}

}
// 동작 시작 함수
function move_left_start()
{
for (i=0; i<=show_items; i++){
setTimeout("move_left("+i+", "+swidth+")", stop_time)
}
}

// 아이템 개별 이동 함수
function move_left(id, cnt){
obj = eval('slider_'+id)

obj.style.pixelLeft-=sstep
cnt -= sstep
if (cnt > 0){
setTimeout("move_left("+id+", "+cnt+")", sspeed)
}else if (obj.style.pixelLeft < -sstep){
obj.style.pixelLeft = show_items * swidth
new_item++
if (new_item == kzone_gift.length) new_item=0

obj.innerHTML= '<img src="'+kzone_gift[random_val[new_item]]+'"></a>';

move_left_start()
}
}
//-->
</script>






<table width="476" height="148" background="http://img.messenger.hanmail.net/images/messenger4/giftbg01.gif" border="0" cellpadding="0" cellspacing="0">
<tr>
<td valign="top" style="padding: 2,5,0,15">

<script language="javascript">
<!--
random_start();
move_left_start();
if (document.all){
document.writeln('<div align=center onmouseover="sstep=0;" onmouseout="sstep='+sstep_tmp+';" style="position:absolute;width:100%;height:'+(sheight)+';clip:rect(0 100% '+(sheight)+' 0); ">')
var tleft = 0
for (i=0; i <= show_items; i++) {
if (i > 0) {
tleft += eval('slider_'+(i-1)+'.style.pixelWidth')
}

document.writeln('<div align=center id="slider_'+i+'" style="position:absolute;left:'+i*swidth+';width:'+swidth+';top:1;">')
document.writeln('<img src="'+kzone_gift[random_val[i]]+'"></a>');
document.writeln('</div>')
}
document.writeln('</div>')
}else{
document.writeln('<br style="line-height:2px;">');
document.writeln('<table><td widht="20" nowrap>&nbsp;&nbsp;</td><td>');
for (i=0; i <3; i++) {

document.writeln('<img src="'+kzone_gift[random_val[i]]+'" height="140">');

}
document.writeln('</td></table>');

}
//-->
</script>

</td>
</tr>
</table>
2007/11/22 15:17 2007/11/22 15:17
때에 따라 SHIFT, CTRL, ALT 키를 막아야할 경우가 있다. SHIFT, CTRL, ALT 키를 흔히 모디파이어(modifier)라고 부르는데 인터넷 익스플로러에서는 각각의 모디파이어에 대한 다음과 같은 불린(boolean) 속성을 갖고 있다.

event.shiftKey
event.altKey
event.ctrlKey
다른 키보드와 함께 이 SHIFT, CTRL, ALT키가 눌려졌는지 체크하려면 위에 언급한 속성들이 true인지를 체크만 하면 된다. 위의 예는 인터넷 익스플로러의 예이다. 넷스케이프에서는 modifiers란 하나의 속성에서 이 값들을 관리한다. 넷스케이프에는 Event 객체에 이와 관련한 다음과 같은 상수 값을 가지고 있다.

SHIFT_MASK
ALT_MASK
CONTROL_MASK
META_MASK
만일 넷스케이프에서 다른 키보드와 이 SHIFT, CTRL, ALT키가 눌려졌는지 체크하려면 비트와이즈(bitwise) AND 연산자를 사용하여 알아내면 된다. 예를 들어 ALT 키가 눌려졌는지 체크하려면 다음과 같이 하면 된다.

e.modifiers & Event.ALT_MASK
실제 예를 살펴보자.

<BODY ... onKeyPress="handlePress(event)">
<SCRIPT LANGUAGE="JavaScript">
<!--
function handlePress(e) {
  var shiftPressed = (window.Event) ? e.modifiers & Event.SHIFT_MASK : e.shiftKey
  if (shiftPressed) {
    alert("현재 페이지에서 SHIFT키는 사용할 수 없습니다!");
        return false;
  }
  else return true;
}
// -->
</SCRIPT>
...
...
</BODY>
 

위의 소스 코드에서 인터넷 익스플로러와 넷스케이프를 구분하는 코드는 '(window.Event) ?' 부분이다. 이 값이 참이면 넷스케이프이고 거짓이면 인터넷 익스플로러로 간주한다.

다른 ALT키와 CTRL키도 위와 같은 방법으로 잡아낼 수가 있다.
2007/11/22 15:17 2007/11/22 15:17
퀵메뉴 관련소스 중에 비교적 간단해서 자주 애용하는 소스입니다. (중복일지도;;)
근데 아쉽게도 파폭에선 안되네요... 그동안 잘 안 쓴 이유도 그때문인데 그럼에도 불구하고 오늘 어떤 사이트에 적용했다가 (찾아보니 다른건 거의 플래시용이라) 팁으로도 올립니다.

그누에 적용하시려면 아래 소스를 따로 /g4/js/qmenu.js 등의 이름으로 저장한 다음
head.sub.php에서

<script language="javascript" src="<?=$g4['path']?>/js/common.js"></script>
<script language="javascript" src="<?=$g4['path']?>/js/ajax.js"></script>
<script language="javascript" src="<?=$g4['path']?>/js/qmenu.js"></script>
<body topmargin="0" leftmargin="0" <?=isset($g4['body_script']) ? $g4['body_script'] : "";?>>
<a name="g4_head"></a>

이런 식으로 추가해주면 됩니다.


///////////////여기부터 퀵메뉴 소스
document.write('<div id=floater style=\"position:absolute; left:1000px; top:300px; z-index:100;\">');
document.write('<a href=\"#g4_head\" onfocus="this.blur()">Top</a><br>');
document.write('<a href=\"javascript:history.go(-1)\" onfocus="this.blur()">Back</a></div>');

self.onError=null;
currentX = currentY = 0; 
whichIt = null;         
lastScrollX = 0; lastScrollY = 0;
NS = (document.layers) ? 1 : 0;
IE = (document.all) ? 1: 0;
<!-- STALKER CODE -->
function heartBeat() {
if(IE) {
  diffY = document.body.scrollTop;
    diffX = 0;
      }
    if(NS) { diffY = self.pageYOffset; diffX = self.pageXOffset; }
if(diffY != lastScrollY) {
                percent = .1 * (diffY - lastScrollY);
                if(percent > 0) percent = Math.ceil(percent);
                else percent = Math.floor(percent);
if(IE) document.all.floater.style.pixelTop += percent;
if(NS) document.floater.top += percent;
                lastScrollY = lastScrollY + percent;
    }
if(diffX != lastScrollX) {
percent = .1 * (diffX - lastScrollX);
if(percent > 0) percent = Math.ceil(percent);
else percent = Math.floor(percent);
if(IE) document.all.floater.style.pixelLeft += percent;
if(NS) document.floater.top += percent;
lastScrollY = lastScrollY + percent;
}
}
if(NS || IE) action = window.setInterval("heartBeat()",1);
////////////여기까지
2007/11/22 15:16 2007/11/22 15:16