zoukankan      html  css  js  c++  java
  • 对JavaScript事件处理程序/事件监听器的设定的简单介绍

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

    • 指定为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>
  • 相关阅读:
    文件File
    Vuex 模块化实现待办事项的状态管理
    浅谈jquery插件开发模式*****************************************************************************************
    git 详细的操作指南笔记
    Vue学习之路---No.5(分享心得,欢迎批评指正)
    Java 向Hbase表插入数据报(org.apache.hadoop.hbase.client.HTablePool$PooledHTable cannot be cast to org.apac)
    MongoDB -- 查询
    3 分钟学会调用 Apache Spark MLlib KMeans
    架构设计:负载均衡层设计方案(4)——LVS原理
    Linux内核:关于中断你须要知道的
  • 原文地址:https://www.cnblogs.com/chiweiming/p/11819078.html
Copyright © 2011-2022 走看看