下面是一些对事件处理进行设定的方式。

  • 指定为HTML元素的属性(事件处理程序)
  • 指定为DOM元素的属性(事件处理程序)
  • 通过EventTarget.addEventListener()进行指定(事件监听器)

接下来,将会对各种方式进行简单说明。

一、指定为HTML元素的属性

将事件处理程序指定为HTML元素的属性是一种最为简单的设定事件处理程序的方式。

<a id="test" href="https://www.baidu.com" onclick="alert('bar');alert('baz')">百度一下</a>

如果包含多个事件处理程序则用分号分隔。当然,事先另外定义一个函数之后再执行该函数的方式也不会有问题。

<body id="bo">
<a id="test" href="https://www.baidu.com" onclick="f()">百度一下</a>
<script>
function f() {
window.alert("page transfer");
return true;
}
</script>

如果事件处理程序返回了一个false值,则会取消该事件的默认行为。在下面的例子中,事件指的是超链接的跳转事件。

<body id="bo">
<a id="test" href="https://www.baidu.com" onclick="return f()">百度一下</a> <!--onclick="return f()" 将onclick视为函数-->
<script>
function f() {
window.alert("page transfer");
return false;
}
</script>

二、指定为DOM元素的属性

如果一个页面分别使用了HTML文件和JavaScript文件,则应该尽可能少地在HTML文件中使用JavaScript代码,以提高维护性。因此,最好将事件处理程序的设定全都写在JavaScript内。

事件处理程序可以被指定为节点的属性。

<body id="bo">
<a id="test" href="https://www.baidu.com">百度一下</a>
<script>
var doit = document.getElementById('test');
function f() {
window.alert('stop page transfer');
return false; /*同理,返回false超链接将不会实现跳转*/
}
doit.onclick = f;
</script>

注意事件处理程序的设定,像以下前两种方式都是错误的。

    doit.onclick = f(); //得到的是函数的返回值
doit.onclick = "f()"; //单纯的字符串赋值
doit.onclick = f; //正确,得到的是函数的引用

如果将一个已指定为HTML属性中的事件处理程序指定为DOM元素的属性,则会覆盖HTML便签属性中的内容。实现这一多“指定”功能需要使用事件监听器。

三、通过EventTarget.addEventListener()进行指定

如果只能够指定1种处理操作的话,就很难处理复杂的行为。为了弥补这一缺点,在DOM Level2中定义了EventTarget.addEventListener()方法。

<body id="bo">
<a id="test" href="https://www.baidu.com">百度一下</a>
<script>
var doit = document.getElementById('test');
function f() {
window.alert('stop page transfer');
return true;
}
function a(){
window.alert('HelloWorld');
return true;
}
doit.addEventListener('click',f,false); /*第一个参数为注册事件,第二个参数为注册事件处理函数,第三个参数不做介绍*/
doit.addEventListener('click',a,false); /*注册多个监听器*/
</script>

对JavaScript事件处理程序/事件监听器的设定的简单介绍的更多相关文章

  1. IE attachEvent事件处理程序(事件绑定的函数)的this指向的是window不是执行当前事件的dom元素

    IE attachEvent事件处理程序(事件绑定的函数)的this指向的是window不是执行当前事件的dom元素. attachEvent(type,listener); listener函数中的 ...

  2. js 事件处理程序 事件对象

    事件:用户或浏览器自身执行的动作: 事件处理程序:响应某个事件的函数: 事件流:从页面中接收事件的顺序. 1.DOM事件流 "DOM2级事件"规定的事件流包括三个阶段:事件捕获阶段 ...

  3. js事件流、事件处理程序/事件侦听器

    1.事件流 事件冒泡 IE的事件流叫做事件冒泡(event bubbling),即事件开始时由最具体的元素(文档中嵌套层次最深的那个节点)接收,然后逐级向上传播到较为不具体的节点(文档). 事件捕获 ...

  4. DOM事件处理程序-事件对象-键盘事件

    事件流: 事件流--描述的是从页面中接受事件的顺序 IE  ---事件冒泡流:即事件最开始由最具体的元素(文档中嵌套层次最深的那个节点)接收,然后逐级向上传播至最不具体的那个节点(文档). Netsc ...

  5. JavaScript 事件之event.preventDefault()与event.stopPropagation()简单介绍

    event.preventDefault()用法介绍: 该方法将通知 Web 浏览器不要执行与事件关联的默认动作(如果存在这样的动作). 例如,如果 type 属性是 “submit”,在事件传播的任 ...

  6. javaScript事件(二)事件处理程序

    一.事件 二.事件流 以上内容见:javaScript事件(一)事件流 三.事件处理程序 前面提到,事件是用户或浏览器自身执行的某种动作,如click,load和mouseover都是事件的名字.响应 ...

  7. 浅谈JavaScript的事件(事件处理程序)

    事件就是用户或者浏览器自身执行的某种动作.诸如click.load和mouseover,都是事件的名字.而响应某个事件的函数就叫事件处理程序.事件处理程序的名字以"on"开头,比如 ...

  8. Javascript高级编程学习笔记(58)—— 事件(2)事件处理程序

    事件处理程序 事件处理程序即响应某个事件的函数 事件处理程序以 “on” 开头 如“onclick”,“onload” HTML事件处理程序 某个元素支持的每种事件都可以使用一个与响应的事件处理程序同 ...

  9. 【初窥javascript奥秘之事件机制】论“点透”与“鬼点击”

    前言 最近好好的研究了一番移动设备的点击响应速度,期间不断的被自己坑,最后搞得焦头烂额,就是现在可能还有一些问题,但是过程中感觉自己成长不少, 最后居然感觉对javascript事件机制有了更好的认识 ...

随机推荐

  1. 查看python包的安装目录

    步骤二: 如果是从python 的command line 里面查看,可以使用如下命令(python 3.x) import sys print(sys.path)   1 2

  2. jenkins 批量修改svn 地址

    svn服务器的ip变了,jenkins里那么多任务一个个修改要疯了, 每个已经创建后的任务的svn 地址都配置在 jenkins 主目录下的jobs 里对应的任务下的config.xml 里 在job ...

  3. PHP swoole websocket协议上机指南

    这一上机实验的开发环境用的是jetbrain公司的phpstorm 上级步骤如下: 创建websocket服务端 <?php $server = ); function onopen($serv ...

  4. AJAX增删查

    数据库 CREATE DATABASE crmweb; CREATE TABLE `customerstatus` ( `id` bigint(20) NOT NULL AUTO_INCREMENT ...

  5. Ubuntu:笔记本计算机屏幕合盖后进入/不进入休眠设置

    造冰箱的大熊猫,本文在Ubuntu 18.04上验证通过@cnblogs 2019/5/12 1.问题描述 安装有Ubuntu的笔记本计算机与KVM控制器相连,同时一台台式机也与KVM相连.启动笔记本 ...

  6. input获取焦点弹出系统虚拟键盘时,挡住input解决方法

    Element.scrollIntoView() 方法让当前的元素滚动到浏览器窗口的可视区域内. <input type="tel" placeholder="输入 ...

  7. 用electrion打包angular成桌面应用

    用electrion官网的不行. 还好,可以直接照搬 https://github.com/maximegris/angular-electron 安装必要的库 npm i --save-dev el ...

  8. JavaWeb-SpringSecurity记住我功能

    系列博文 项目已上传至guthub 传送门 JavaWeb-SpringSecurity初认识 传送门 JavaWeb-SpringSecurity在数据库中查询登陆用户 传送门 JavaWeb-Sp ...

  9. Android学习_广播接收器

    一.广播 1. 标准广播和有序广播 标准广播:异步,发出消息,所有接收器同时接收.但无法被截断 有序广播:同步,同一时刻只有一个广播接收器接收.可截断消息. 2. 广播注册 代码中注册(动态注册).A ...

  10. win7安装ElasticSearch集群

    1.单节点安装请参考上篇博客 http://www.cnblogs.com/lianliang/p/7953754.html 2.集群的安装(这里模拟两个节点) 1)集群的安装,基于之前单节点的安装 ...