1. 程式人生 > >JS中的默認行為

JS中的默認行為

js中的默認事件

默認行為

默認行為

1什麽是默認行為:說白了,就是瀏覽器自帶的功能,比如網頁右鍵自動彈出菜單。在輸出框中敲擊鍵盤,自動輸出敲擊的數值,這些都是默認行為

document.oncontextmenu=function oncontextmenu作用是點擊右鍵,呼叫右鍵菜單的時候

2怎麽阻止默認行為

<script>

document.oncontextmenu=function()

{

return false;

}

</script>.

給這個函數弄一個返回值 false就是拒絕默認行為

3把默認行為拒絕掉,但是不拒絕自己設置的菜單

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title></title>

<style>

#div1{

background: red;display:none;position:absolute;width:80px;

}

</style>

<script>

document

.oncontextmenu=function(ev)//右鍵觸發菜單

{

var oEvent=ev||event;

var oDiv=document.getElementById(‘div1‘);

oDiv.style.display=‘block‘;

oDiv.style.left=oEvent.clientX+‘px‘;

oDiv.style.top=oEvent.clientY+‘px‘;

return

false;

}

document.onclick=function()

{

var oDiv=document.getElementById(‘div1‘);

oDiv.style.display=‘none‘

}

</script>

</head>

<body>

<div id="div1">

<ul>

<li>aaaa</li>

<li>aaaa</li>

<li>aaaa</li>

<li>aaaa</li>

</ul>

</div>

</body>

</html>

4只能輸入數字的輸入框例子

keydown 鍵盤按下 keyup鍵盤按下之後又松開

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title></title>

<script>

window.onload=function()

{

var oTxt=document.getElementById(‘text1‘);

oTxt.onkeydown=function(ev)//鍵盤按鍵擡起時

{

var oEvent=ev||event;

//alert(oEvent.keyCode)

if(oEvent.keyCode<48 || oEvent.keyCode>57)

{

return false;

}

};

}

</script>

</head>

<body>

<input id="text1" type="text" />

</body>

</html>

拖拽

拖拽:就是你點擊一個框一直點擊不松手可以跟著鼠標移動而移動

整體代碼:

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title></title>

<style>

#div1{

background: red;

width:100px;

height:100px;

position:absolute;

}

</style>

<script>

window.onload=function()

{

var disX=0;

var disY=0;

var oDiv=document.getElementById(‘div1‘);

document.onmousedown=function(ev)//鼠標點下時

{

var oEvent=ev||event;

disX=oEvent.clientX-oDiv.offsetLeft;

disY=oEvent.clientY-oDiv.offsetTop;

document.onmousemove=function(ev)

{

var oEvent=ev||event;

var l=oEvent.clientX-disX;

var t=oEvent.clientY-disY;

oDiv.style.left=l+‘px‘

oDiv.style.top=t+‘px‘

}

document.onmouseup=function()

{

document.onmousemove=null;

document.onmouseup=null;

};

return false;//火狐有一個默認行為,這裏取消掉

};

}

</script>

</head>

<body>

<div id="div1"></div>

</body>

</html>

但是在火狐瀏覽器下會有一個bug,你點一次拖拽沒問題,第二次拖拽會有一個陰影,這是火狐瀏覽器的bug,只要關閉默認行為就可以了

return false;

但是還有一個小問題,就是有的人會把拖拽框拖到網頁以外,然後就找不到了,怎麽辦呢。用下面代碼解決

document.onmousemove=function(ev)這個函數改成如下:

document.onmousemove=function(ev)

{

var oEvent=ev||event;

var l=oEvent.clientX-disX;

var t=oEvent.clientY-disY;

if(l<0)

{

l=0;

}else if(l>document.documentElement.clientWidth-oDiv.offsetWidth)

{

l=document.documentElement.clientWidth-oDiv.offsetWidth

}

if(t<0)

{

t=0

}else if(t>document.documentElement.clientHeight-oDiv.offsetHeight)

{

t=document.documentElement.clientHeight-oDiv.offsetHeight

}

oDiv.style.left=l+‘px‘

oDiv.style.top=t+‘px‘

}


本文出自 “新網學會博客” 博客,請務必保留此出處http://xwxhvip.blog.51cto.com/13020757/1983878

JS中的默認行為