天天看點

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()

           {

             oDiv.style.display='none'

           }

     </script>

   </head>

   <body>

     <div id="div1">

        <ul>

           <li>aaaa</li>

           <li>aaaa</li>

        </ul>

     </div>

   </body>

</html>

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

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

        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;

             }

           };

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

二拖拽

拖拽:就是你點選一個框一直點選不松手可以跟着滑鼠移動而移動

整體代碼:

  <head>

       #div1{

         background: red;

         width:100px;

         height:100px;

         position:absolute;

       }

       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;//火狐有一個預設行為,這裡取消掉

         };

       }

  </head>

  <body>

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

  </body>

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

return false;

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

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

document.onmousemove=function(ev)

            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

                                   }

繼續閱讀