javascript --- js中的事件

事件实现松耦合:

// JS和HTML之间的交互是通过事件实现的.
// 事件,就是文档或浏览器窗口中发生一些特定的交互瞬间.
// 可以使用侦听器来预定事件,以便事件发生时执行相应的代码.
// 这种在传统软件工程中被称为观察员模式的模型,支持页面的行为与页面的外观之间的松耦合

事件流:

// 多个浏览器开发团队在看待浏览器事件上都保持同一个理念
// 当你点击了某个按钮,他们都认为单击事件不仅仅发生在按钮上
// 换句话说,在单击按钮的同时,你也单击了按钮的容器元素,甚至也单击了整个页面.
// 这样会产生多个事件,按从页面中接收事件的顺序,产生了事件流的概念.
// 一个有趣的现象是,IE和Netscape2个开发团队提出了完全相反的事件流的概念:事件冒泡和事件捕获

事件冒泡:

// IE开发团队定义的事件流,称为事件冒泡,即:
// 事件开始时由最具体的元素接收,然后逐级向上传播到较为不具体的节点.
<!DOCTYPE html>
<html><head><title>Event Bubbling Example</title></head><body><div id="myDiv">Click Me</div></body>
</html>// 以上DOM结构中,倘若你点击了div元素,事件会按如下顺序,依次执行:
// (1)div > (2)body > (3) html > (4)document
// 就像一个泡泡逐渐浮起来...

在这里插入图片描述
事件捕获:

// 与IE团队提出来的事件冒泡相反,Netscape Communicator团队提出了另外一种事件流叫事件捕获

在这里插入图片描述
DOM事件流:

// "DOM2级事件"规定的事件流包括三个阶段:事件捕获阶段、处于目标阶段和事件冒泡阶段

在这里插入图片描述

// 首先发生的是事件捕获,为捕获事件提供了机会.(document > Html > body)
// 然后是实际的目标接收到事件.(div)
// 最后是事件的冒泡.(body > html > document)
// 多数支持DOM事件的浏览器都实现了一种特定行为(如:IE9、Safari、Chrome、Firefox和Opera9.5及更高版本)
// 它们会在捕获阶段触发事件对象上的事件("DOM2级事件"规范明确要求捕获阶段不会涉及事件目标).
// 造成的结果是,有2个机会在目标对象上操作事件

事件处理程序:

// 事件:就是用户或浏览器自身执行的某种动作.诸如:click、load和mouseover都是事件的名字.
// 事件处理程序:响应事件的函数

HTML事件处理程序:

// 某个元素支持的每种事件,都可以使用一个与相应事件处理程序同名的HTML特性来指定.   
// 例如:要在按钮被单击时执行一些JavaScript
<input type="button" value="Click Me" onclick="alert('Clicked')" />// 在HTML中定义的事件处理程序既可以包含要执行的具体动作,也可以调用在页面其他地方定义的脚本,
<script>function showMessaget(){alert('Hello Wordl!');}<input type='button' value="Click Me" onclick="showMessage()" />
</script>
// 在上面例子中,单击按钮就会调用showMessage()函数.这个函数是在一个独立的<script>元素中定义的,当然也可以是一个外部文件.
// 事件处理程序中的代码在执行时,有权访问全局作用域中的任何代码.
// 值得一提的是,在使用以上方法定义事件处理程序的同时,会有一个event的局部变量.使用如下将其打印出来:
<script>function showEvent(msg){console.log(msg);}
</script><input type="button" value="Click Me" onclick="showEvent(event)" />

在这里插入图片描述

// 还可以注意到上面input中有个value="Click Me". 可以通过this.value访问到.
<input type="button" value="Click Me" onclick="console.log(this.value)" />

在这里插入图片描述

参考《JavaScript高级程序设计》(第3版)P346~P349

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/251118.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

centos系统设置局域网静态IP

---恢复内容开始--- centos系统设置局域网静态IP 很多时候&#xff0c;我们并不希望漏油器重启之后&#xff0c;自己的服务器动态的获取IP&#xff0c;这样很不利&#xff0c;因为你可能装了mysql&#xff0c;redis&#xff0c;等软件&#xff0c;然后需要远程去访问这台服务器…

DOM-3 【utils/待讲评】节点属性、方法、封装方法、DOM结构

讲评 节点属性 nodeType 元素节点 1 大写 属性节点 2 文本节点 3 #text 注释节点 8 #comment document 9 DocumentFragment 11 nodeName是只读属性元素节点的nodeName是大写的其余的是#小写的元素节点没有nodeValue属性&#xff0c;null&#xff0c;是可写的其余有&#xff08…

javascript --- DOM0级、DOM2级、跨浏览器 的事件处理程序

DOM0级事件处理程序: // 使用DOM0级方法指定的事件处理程序被认为是元素的方法 // 这个时候的事件处理程序是在元素的作用域中运行: <div id "myBtn" >DOM0</div> <script>var btn document.getElementById("myBtn");btn.onclick fun…

DOM-4 【utils/待讲评】节点创建删除、元素属性设置获取、节点属性

讲评 节点创建 Document.prototype ← document.createElement(div)document.createTextNode(xxx) // 创建文本节点document.createComment(xxx) // 创建注释节点 增加/剪切子节点 Node.prototype ← node.appendChild(node)总是在父元素的最后增加&#xff08;类似push&am…

javascript --- 事件对象和事件类型

// 无论程序使用"DOM0级"规范还是"DOM2级"规范,都会在局部产生一个event对象, // 将其打印出来研究: <div id"divBtn"><button id"rawBtn" >Click Me!</button></div> <script>const divBtn document…

关于APP更新,两包共存的解决方案

大多数是由于包名不一致导致的&#xff0c;一定要注意包名一致、不然手机会认为是两个app&#xff0c;导致两个包共存 查看包名的方法 1、hbuilder打包时会有提示 2、手机打开设置->应用->正在运行->对应app即可查看 转载于:https://www.cnblogs.com/zz-0128/p/827969…

DOM-5【兼容】滚动距离与高度、兼容模式、可视尺寸

查看滚动条的距离 方法版本window.pageXOffset / pageYOffsetIE9/IE8及以下不支持(常规)document.body.scrollLeft/scrollTopIE9/IE8及以下(部分支持&#xff0c;具体看模式)document.documentElement.scrollLeft/scrollTopIE9/IE8及以下(部分支持&#xff0c;具体看模式)wind…

DOM-6 【兼容】读写样式属性、操作伪元素、运动元素初探

规范 <style type"text/css"></style><script type"text/javascript"></script>读写样式属性 .style是访问不到css样式表的&#xff0c;只能访问到行内/内联的属性&#xff0c;当未设置行内属性时&#xff0c;结果为空字符串 设…

RGBD论文阅读笔记

Single-Image Depth Perception in the Wild 简要记载一下对于利用RGB图像depth图像得到segmentation的论文。 论文名称&#xff1a;Cascaded Feature Network for Semantic Segmentation of RGB-D Images 论文出处 ICCV 2017 Lin 模型结构 数据集 NYUDv2 SUN-RGBD 性能分析 总…

vue组件调用(全局调用和局部调用)

当用vue-cli创建一个项目后, 创建项目的方法: https://www.cnblogs.com/fps2tao/p/9376847.html 编写了组件怎么,在其他组件中调用了? 组件listBox: 路径 src/components/listBox.vue <template><div class"listBox">listBox222</div> </templ…

DOM-7 【兼容】事件处理函数、冒泡捕获、阻止冒泡默认事件

事件处理函数 绑定事件 绑定事件的处理函数&#xff08;事件本身是存在的&#xff0c;绑定的是相应的反馈&#xff09;事件 事件的反馈 前端交互 &#xff08;前端核心&#xff09; 绑定事件的方式 1. 句柄绑定 默认&#xff08;只能&#xff09;是事件冒泡这种事件流为…

DOM-8 【兼容】冒泡捕获流、事件与事件源对象、事件委托

事件流 1. 含义 描述从页面中接收事件的顺序 2. 分类 IE提出的 事件冒泡流 Event BubblingNetscape提出的 事件捕获流 Event Capturing 3. 阶段 事件捕获阶段 处于目标阶段 事件冒泡阶段 事件捕获先于事件冒泡执行 dom dom0&#xff1a;定义句柄方式&#xff0c;兼…

IIS6.0,Apache低版本,PHP CGI 解析漏洞

IIS6.0解析漏洞 在IIS6.0下存在这样的文件“名字.asp;名字.jpg” 代表了jpg文件可以以asp脚本类型的文件执行。 根据这个解析漏洞我们可以上传这种名字类型的图片&#xff0c;比如 1.asp;xxx.jpg 他会忽略;后边的内容&#xff0c;所以文件相当于1.asp asp一句话木马 <%eval …

UVA 3485 Bridge

题目大意 你的任务是修建一座大桥。桥上等距地摆放着若干个塔&#xff0c;塔高为H&#xff0c;宽度忽略不计。相邻两座塔之间的距离不能超过D。塔之间的绳索形成全等的对称抛物线。桥长度为B&#xff0c;绳索总长为L&#xff0c;如下图所示求建最少的塔时绳索的最下端离地的高度…

ES5-拓展 this指向的总结

每个函数在执行时都有自己的this指向 1. 默认绑定规则&#xff1a; 全局中&#xff0c;this指向window this window函数的独立调用&#xff0c;this默认指向window &#xff08;不要把独立调用理解成window调用&#xff09; // 函数在全局中调用&#xff0c;也就是被window调…

国内初创企业选择云计算服务器价格对比

假设我们是一家初创企业&#xff0c;现在要选择第一台服务器。业务还未确定&#xff0c;只知道是互联网业务 要求&#xff1a; 至少2核&#xff0c;否则多线程的软件都跑不了至少4G内存&#xff0c;这样可以运行数据库或者elasticsearch这种比较吃内存的东西。或者说&#xff0…

ES5-拓展 箭头函数的this、this的优先级

让内部函数的this指向和父函数的this&#xff0c;可以显示改变this指向&#xff0c;也可以使用箭头函数 箭头代替了function关键字 箭头函数内部没有this指向&#xff0c;箭头函数的this是稳定引用父作用域的。因为它的存在就是要稳定this指向。 适用于普通函数的所有绑定规则…

java 实现压缩单个文件

先来实现一个简单的单文件压缩&#xff0c;主要是为了解一下压缩需要使用到的流。。 效果&#xff1a; 说明&#xff1a;压缩实现使用ZipOutputStream 代码&#xff1a; package com.gx.compress;import java.io.BufferedInputStream; import java.io.BufferedOutputStream; im…

jekins构建触发器详解

jenkins版本&#xff1a;2.89.2 1、触发远程构建 (例如,使用脚本)&#xff1a;通过一个网址的访问来触发构建&#xff0c;这样就不需要登录jenkins系统也能触发构建了。 示例地址&#xff1a; http://localhost:8848/job/FlashRegistration/build??token口令&cause书写构…

ES5-拓展 隐式数据类型转换

Boolean转换原则&#xff1a;非假即真 6种虚值 原始值转换为原始值 对象转换为原始值 Date()和new Date() new Date可以不写括号(new方式返回的一定是对象)&#xff0c;返回Date对象Date()返回函数执行&#xff0c;返回时间字符串 引用值转原始值 先找valueOf方法(一般…