Handing events

前言

这一章节主要讲了关于 events 的内容,讲了 event 的定义,以及如何用 code 来 react to events。同时,也说明了 JavaScript 中利用 event 编码的特点:它是 asynchronous 的,而不是 linear 的。

谈谈event

定义:Browser 不仅仅 retrieve & display 你的 page, 也不仅仅会 building 这个 page 的 DOM, 而且还会记录一系列的 events,比如一次点击,一次缩放等等...
在这一章讲了三种类型的 event:

  1. DOM events:比如 click,keypress 等等
  2. timer events
  3. network-based events

谈谈 event handler

event handler 的定义:

在 code 的方面,event handler 就是 一个 function,当特定的 event 发生的时候,就会 call 这个 function.

如何使用event handle

  1. 写一个函数:function pageLoadedHandler(){}
  2. 然后设置一个 callback 的 event:wind.onload = pageLoadHandler;

DOM event 的 handle 方法

步骤:

  1. 创建一个 DOM 对象
  2. assign 一个 handler 在它的一个 event 上。
  3. 完善 handler 的函数

注意事项

1, 在 DOM 被创建之后,page 中的 element 才能被 JavaScript 中使用,所以每次都需要调用 onload,然后在调用在函数里创建 HTMl 中的 element 对象。
格式:
window.onload = init;
function init() {
var name = document.getElementById("idOfElement")
2, 一个 image 对象具有 src,id 这些 property可以使用,格式为 :image.src = "zero.jpg";
3, eventObj:当多个对象的 handler 的模式一样的时候,可以利用 event object 中的 target 这个 property 来 reuse the handler, 其他的 properties 有 type, timeStamp, keyCode, clientX, clientY等等。
4, getElementByTagName() :可以返回一个 list,类型为 Nodelist 的 Object,可以使用 for() 循环和 getElementByTagName("img") 来为每一个 DOM element 匹配相同的 handler,

书中介绍的一些 events

通过 assign a handler to a property 的方式

  • window.onload:在界面 load 完全之后进行 call back
  • window.onresize: 在浏览器界面改变尺寸的时候进行 call back.
  • object.onclick: 在 user 鼠标点击的时候 call back
  • object.onmousemove:在 user 鼠标移动的时候进行 call back.
    * object.onmousseover: 在 user 鼠标移过的时候进行 call back

通过 call function 的方式:setTimeout,setInterval

语法:

首先定义一个 handler,然后使用 setTimeout(x,y),其中 x 为 handler, y为进行的时间,单位为毫秒,当到达时间就会 invoke 这个 tied 的 handler
setInterval(x,y),格式与 setTImeout(x,y) 相同,是每隔 y 毫秒就会 invoke 对应的 handler.

其他

  1. 当 setInterval 的时候,会创建一个 timer object,可以将它传给 clearInterval 来终止 timer.
  2. setTimeout 实际上是一个 method, 完整的形式为 window.setTimeout.
  3. 可以为 setTimeout 中设置第三个 argument 为 handler 需要的 argument.
  4. 这样做的原因是: 没有特定地发生 DOM event. 因此可以先利用 eventObj.target 获得对象,然后把这个对象作为一个 argument 传给 setTimeout.

JavaScript 第九章总结的更多相关文章

  1. 为什么我要放弃javaScript数据结构与算法(第九章)—— 图

    本章中,将学习另外一种非线性数据结构--图.这是学习的最后一种数据结构,后面将学习排序和搜索算法. 第九章 图 图的相关术语 图是网络结构的抽象模型.图是一组由边连接的节点(或顶点).学习图是重要的, ...

  2. JavaScript DOM编程艺术-学习笔记(第八章、第九章)

    第八章 1.小知识点: ①某些浏览器要根据DOCTYPE 来决定页面的呈现模式(标准模式 / 怪异模式--也称兼容模式): 兼容模式意味着浏览器要模仿老一辈的浏览器的怪异行为,来让老站点得到运行,并让 ...

  3. JavaScript高级程序设计:第九章

    第九章 一.使用能力检测 能力检测的目标不是识别特定的浏览器,而是识别浏览器的能力.能力检测的基本模式如下: if ( object.propertyInQuestion ) { //使用object ...

  4. 精通Web Analytics 2.0 (11) 第九章: 新兴分析—社交,移动和视频

    精通Web Analytics 2.0 : 用户中心科学与在线统计艺术 第九章: 新兴分析-社交,移动和视频 网络在过去几年中发生了不可思议的发展变化:从单向对话到双向对话的转变; 由视频,Ajax和 ...

  5. Knockout应用开发指南 第九章:高级应用举例

    原文:Knockout应用开发指南 第九章:高级应用举例 1   Contacts editor 这个例子和微软为演示jQuery Data Linking Proposal例子提供的例子一样的提供的 ...

  6. jQuery第九章

    第九章 jQuery Mobile 一.HTML5.0简介 谈到Web设计,我们经常把Web分为三个层: (1)结构层:(2)表现层:(3)行为层. 对应的技术分别是: (1)HTML:(2)CSS: ...

  7. 《Django By Example》第九章 中文 翻译 (个人学习,渣翻)

    书籍出处:https://www.packtpub.com/web-development/django-example 原作者:Antonio Melé (译者@ucag 注:哈哈哈,第九章终于来啦 ...

  8. 第九章 基于HTTP的功能追加协议

    第九章 基于HTTP的功能追加协议 通过在HTTP的基础上添加新的功能来提高性能和功能. 一.消除HTTP瓶颈的SPDY SPDY(SPeeDY)目的是提高HTTP性能,缩短Web页面的加载时间(50 ...

  9. 第九章:四大组件之Broadcast Receiver

    第九章:四大组件之Broadcast Receiver   一.广播的功能和特征 广播的生命周期很短,经过调用对象-->实现onReceive-->结束,整个过程就结束了.从实现的复杂度和 ...

随机推荐

  1. 2018年北京信息科技大学第十届程序设计竞赛暨ACM选拔赛题解

    链接:https://www.nowcoder.com/acm/contest/118/A 来源:牛客网 PUBG 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语 ...

  2. 网络 --- 3 socket模块 粘包

    一 .socket 模块参数及方法 二.缓冲区 三.粘包 1.两种粘包现象 ①连续的小包可能会被优化算法给组合到一起进行发送 ②第一次如果发送的数据大小2000B接收端一次性接受大小为1024, 这就 ...

  3. Delphi xe5 编译报environment.proj错误的解决

    Delphi xe5 在Win64位下编译报 environment.proj 错误,网上有说明: http://hi.baidu.com/fly_king1228/item/9c85fccd8db4 ...

  4. CSS的再深入2(更新中···)

    在上一章中,我们又引出了一个知识点: margin的问题 margin:0 auto:(上下为0,左右自适应)会解决元素的居中问题(auto 自适应)前提是给这个元素设置width 同时,我们又要学习 ...

  5. html的初了解(更新中···)

    (注:在学习时要养成一个良好的习惯,即每次写完都随手保存,快捷键为ctrl+s.即每次写完都随手点一下ctrl+s.) html是万维网的核心语言.标准通用标记语言下的一个应用超文本标记语言. 网页的 ...

  6. Python3 tkinter基础 event keysym 查看按键的按键名

             Python : 3.7.0          OS : Ubuntu 18.04.1 LTS         IDE : PyCharm 2018.2.4       Conda ...

  7. 2015,3,10 2(南阳理工ACM)

    描述有一个整型偶数n(2<= n <=10000),你要做的是:先把1到n中的所有奇数从小到大输出,再把所有的偶数从小到大输出.   输入 第一行有一个整数i(2<=i<30) ...

  8. 强大的Django后台管理

    Django 后台 django的后台我们只要加少些代码,就可以实现强大的功能.与后台相关文件:每个app中的 admin.py 文件与后台相关 下面示例是做一个后台添加博客文章的例子: 新建一个 名 ...

  9. What is the difference between visibility:hidden and display:none?

    What is the difference between visibility:hidden and display:none? 答案1 display:none means that the t ...

  10. Unity3D学习笔记(三十一):Xlua(1)

    Xlua:腾讯研发,开源免费   配置:文件解压,拷贝到Unity项目里 注意:Xlua文件夹不许移动,不许重命名   运行Xlua: 1.引用命名空间 2.创建虚拟机 3.运行lua语句 4.不需要 ...