<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> </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>
때에 따라 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키도 위와 같은 방법으로 잡아낼 수가 있다.
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키도 위와 같은 방법으로 잡아낼 수가 있다.
퀵메뉴 관련소스 중에 비교적 간단해서 자주 애용하는 소스입니다. (중복일지도;;)
근데 아쉽게도 파폭에선 안되네요... 그동안 잘 안 쓴 이유도 그때문인데 그럼에도 불구하고 오늘 어떤 사이트에 적용했다가 (찾아보니 다른건 거의 플래시용이라) 팁으로도 올립니다.
그누에 적용하시려면 아래 소스를 따로 /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);
////////////여기까지
근데 아쉽게도 파폭에선 안되네요... 그동안 잘 안 쓴 이유도 그때문인데 그럼에도 불구하고 오늘 어떤 사이트에 적용했다가 (찾아보니 다른건 거의 플래시용이라) 팁으로도 올립니다.
그누에 적용하시려면 아래 소스를 따로 /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);
////////////여기까지
//링크클릭시 나타나는 점선 없애주기
function autoblur() {
if(event.srcElement.tagName == "A") document.body.focus();
}
document.onfocusin = autoblur;
g4/js/common.js 맨아래에 위의 내용을 추가해줍니다.
(익스플로러에서만 되내요)
function autoblur() {
if(event.srcElement.tagName == "A") document.body.focus();
}
document.onfocusin = autoblur;
g4/js/common.js 맨아래에 위의 내용을 추가해줍니다.
(익스플로러에서만 되내요)