美文网首页
JS事件处理

JS事件处理

作者: yaya_pangdun | 来源:发表于2016-06-02 18:14 被阅读49次

    鼠标事件

    document.onclick = function(ev) {
      var oEvent = ev || event; //ie下ev不存在,firefox默认传一个ev
      oEvent.clientX; //鼠标点击时的位置
    }
    

    事件冒泡

    //取消事件冒泡
    oBtn.onclick = function(ev) {
      var oEvent = ev || event;
      oEvent.cancelBubble = true;
    }
    

    控件随着鼠标移动

    document.onmousemove = function(ev) {
      var oEvent = ev || event;
      //clientX和clientY代表的是可视区的坐标
      //所有使用clientX和clientY的都需要计算到滚动条
      //oDiv需要设置style为absolute
      var scrollTop = document.documentElement.scrollTop || document.body.scrollTop;
      oDiv.style.top = oEvent.clientY + document.documentElement.scrollTop;
    }
    

    按键事件

    基础

    onkeydown、onkeyup、onkeypress

    document.onkeydown = function(ev) {
      oEvent = ev || event;
      oEvent.keyCode
    }
    

    小知识

    oDiv.offsetLeft; //就是style中的left值 + margin-left值
    
    

    ctrl+enter留言

    oText.onKeydown = function(ev) {
      var oEvent = ev || event;
      //shiftKey,altKey
      if(oEvent.ctrlKey && oEvent.keyCode == 13) {
    
      }
    }
    

    默认行为

    屏蔽右键菜单

    document.oncontextmenu = function(){
      return false;
    }
    

    阻止表单提交

    oForm.onsubmit = function() {
      return false;
    }
    

    自定义右键菜单

    <style>
      #menu {
        width: 50px;
        background: #CCC;
        border: 1px solid black;
        position: absolute;
        display: none;
      }
    </style>
    <ul id="menu">
      <li>登录</li>
      <li>回到首页</li>
      <li>注销</li>
    </ul>
    
    //js
    document.oncontextmenu = function(ev) {
      var oEvent = ev || event;
      var oUl = document.getElementById("menu");
      oUl.style.display = "block;
      //未加 scrollTop和scrollLeft
      oUl.style.left = oEvent.clientX + 'px';
      oUl.style.top = oEvent.clientY + 'px';
      return false;
    }
    document.onclick = function () {
      var oUl = document.getElementById("menu");
      oUl.style.display = 'none';
    }
    

    拖拽事件

    //onmousedown -> onmousemove -> onmouseup
    window.onload = function() {
        var oDiv = document.getElementById("div1");
        
        var disX = 0;
        var disY = 0;
        
        oDiv.onmousedown = function(ev) {
          var oEvent = ev || event;
          disX = oEvent.clientX - oDiv.offsetLeft;
          disY = oEvent.clientY - oDiv.offsetTop;
          //防止拖出div范围
          document.onmousemove = function(ev) {
            var oEvent = ev || event;
            
            oDiv.style.left = oEvent.clientX - disX + 'px';
            oDiv.style.top = oEvent.clientY - disY + 'px';
            
          }
          
          document.onmouseup = function() {
            document.onmousemove = null;
            document.onmouseup = null;
          }
        }
        
       return false; //修正firefox下的bug,空div拖拽bug
      }
    

    相关文章

      网友评论

          本文标题:JS事件处理

          本文链接:https://www.haomeiwen.com/subject/vmtdrttx.html