2021-06-30


事件对象:
存储了一些事件发生时的信息。
arguments保存了我们函数执行时传入的参数.跟形参没关系,跟实参有关系。
事件函数在触发时,会自动传入一个参数,这个参数就是事件对象。

标准浏览器:主流的chrome 火狐等,IE8及以上
在事件处理函数中,定义一个形参接受。
IE低版本浏览器(5-7)中:
在事件处理函数中,不需要形参接受,而是用window.event;

键盘事件对象

主要用于判断我们按下的是哪个键。
key属性:按下的是哪一个键
keycode:按下的是哪一个键,以编码的格式。

 <script>
    document.onkeydown = function(event){
      event = event || window.event;
      // console.log(event.key);
      // console.log(event.keyCode);
      console.log(event.shiftKey);
    }
  </script>

组合键:

  ctrl:ctrlKey 
  alt: altKey
  shift:shiftKey
  meta :在window下,win键   在mac command  metaKey
  以上四个值都是布尔值

鼠标事件对象

    button 属性:表示我们按下的是哪个键
    0 左键  1 滚轮  2右键
<script>
 var btn = document.getElementById("btn")
    btn.onmousedown = function(event){
      //在IE低版本下,event是undefined,转布尔值就是false。 逻辑或(||)第一个值转布尔值如果为false,直接将第二个值返回。
      var e = event || window.event;
      console.log(e.button);
    }
    </script>

获取鼠标的位置

      pageX pageY  参考点:页面的左上角
      clientX  clientY  参考点:视口的左上角
      screenX  screenY  参考点:屏幕的左上角
 <script>
 document.body.onclick = function(event){
     event = event || window.event;
    //  console.log(event.pageX);
    //  console.log(event.pageY);
    // console.log(event.clientX,event.clientY);
    console.log(event.screenX,event.screenY);
   }
  </script>

事件冒泡

**事件传播机制:冒泡  捕获**
冒泡:是从当前触发事件的元素上,一级一级向上触发,到document结束。
捕获:从document开始,一级一级向下触发,知道当前触发事件的元素上。
传播机制:必须是同一类型的事件才可以传播。

阻止事件冒泡:
当外层元素和内层元素拥有同一类型的事件时,当内层元素的事件触发时,也会让外层元素的事件触发,为了阻止外层元素的事件触发, 可以在内层元素的事件        处理函数中,通过事件    对象event 调用stopPropagation()
<body>
  <div id="gf">
    <div id="father">
      <div id="son"></div>
    </div>
  </div>
  <script>
    var gf = document.getElementById("gf");
    var father = document.getElementById("father");
    var son = document.getElementById("son");
    gf.onclick = function(){
      alert("爷爷")
    }
    father.onclick = function(){
      alert("爸爸")
    }
    son.onclick = function(event){
      event = event || window.event;
      event.stopPropagation();
      alert("儿子");
    }
    // gf.addEventListener("click",function(){
    //   alert("爷爷")
    // },true)
    // father.addEventListener("keydown",function(){
    //   alert("爸爸")
    // },true)
    // son.addEventListener("click",function(){
    //   alert("儿子")
    // },true)
  </script>

浏览器默认行为

在页面中,有一些特殊的标签,比如a标签,form表单。
它们默认有一些自己的事件。
a标签:跳转
form表单:提交

阻止浏览器的默认行为:
  1.事件函数中直接返回fasle  return false;
  2.event.preventDefault();
<body>
    <a href="http://www.baidu.com">百度一下</a>
    <form>
        名字:<input type="text" name="title">
        <button>点击一下</button>
    </form>
    <script>
        //  var _a = document.querySelector("a")
        //  _a.onclick = function(){
        //    alert("跳转到百度页面。")
        //  }
        var title = document.querySelector("input");
        var _form = document.querySelector("form");
        _form.onsubmit = function(event) {
            if (title.value.trim().length > 6) {
                alert("表单提交了");
            }
            // event.preventDefault();
            // return false;
        }
    </script>
</body>

事件委托

“事件代理”即是把原本需要绑定在子元素的响应事件(click、keydown…)委托给父元素,让父元素担当事件监听的职务
Exp:

<style>
    .checked{
      background-color: red;
    }
  </style>
  <body>
  <!--  事件委托 -->
   <button id="addBtn">新增</button>
  <ul>
    <li>111</li>
    <li>222</li>
    <li>333</li>
    <li>444</li>
  </ul>
  <script>
    /**
     * 点击li标签,为它添加一个 checked 类名,将其背景色修改为red.
     * 
     * 点击新增按钮:在ul尾部添加一个li标签。
     */
    var lis = document.querySelectorAll("li");
    for(var i = 0; i<lis.length;i++){
      lis[i].onclick = function(){
        this.classList.add("checked");
      }
    }
    var addBtn = document.getElementById("addBtn");
    var _ul = document.querySelector("ul");
    addBtn.onclick = function(){
      var _li = document.createElement("li");
      _li.innerHTML = (document.querySelectorAll("li").length+1)*111;
      _li.onclick = function(){
        this.classList.add("checked");
      }
      _ul.appendChild(_li);
    }
  </script>
</body>

自定义右键点击菜单案例

  <style>
    ul{
      list-style: none;
      width: 250px;
      height: 200px;
      background-color: rgba(10,10,10);
      color: #fff;
      display: none;
      position: absolute;
      left: 0;
      top: 0;
    }
    li{
      height: 50px;
      line-height: 50px;
    }
  </style>
  <body>
  <!--  1.先阻止默认的右键菜单2.自定义菜单 -->
  <ul>
    <li>画布放大</li>
    <li>画布缩小</li>
    <li>重置</li>
    <li>定位</li>
  </ul>
  <script>
    var _ul = document.querySelector("ul");
    document.oncontextmenu = function(event){
      event.preventDefault();
      _ul.style.display = "block";
      _ul.style.left = event.pageX + "px"
      _ul.style.top = event.pageY + "px"
    }
    document.onclick = function(event){
      if (event.target.nodeName != "LI") {
        _ul.style.display = "none";
      }
    }
  </script>
</body>
weixin073智慧旅游平台开发微信小程序+ssm后端毕业源码案例设计 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
python017基于Python贫困生资助管理系统带vue前后端分离毕业源码案例设计 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值