zoukankan      html  css  js  c++  java
  • Javascript中的事件

    //事件概述:(详见高三第十三章P350)
    //“DOM2级事件”定义了两个方法:addEventListener()和removeEventListener()用于指定和删除事件处理程序的操作;
    //(支持DOM2级事件处理程序的浏览器有IE9、FireFox、Safari、Chrome、Opera)
    //IE实现了与DOM中类似的两个方法:attachEvent()和detachEvent()
    //(支持IE事件处理程序的浏览器有IE、Opera)
    window.onload = function () {
        //---------给按钮绑定事件 Begin---------------
        var version = window.navigator.userAgent.toString();
        var btn = document.getElementById("btnOK");

        var handler1 = function () {
            alert("按钮被点击1!");
        }
        var handler2 = function () {
            alert("按钮被点击2!");
        }
        var handler3 = function () {
            alert("按钮被点击3!");
        }
        var handler4 = function () {
            alert("按钮被点击4!");
        }

        var btnattach = document.getElementById("btnAttach");
        //使用DOM0级方法指定HTML元素事件处理程序
        //这是传统的方式,好处是:一简单,二具有跨浏览器的优势
        btnattach.onclick = function () {
            if (version.search("MSIE") > -1) {
                alert("您使用的是IE浏览器!");
                //使用IE事件处理程序
                btn.attachEvent("onclick", handler3);
                btn.attachEvent("onclick", handler4);
            }
            else if (version.search("Chrome") > -1) {
                alert("您使用的是谷歌浏览器!");
                //使用DOM2级事件处理程序
                btn.addEventListener("click", handler1, false);
                btn.addEventListener("click", handler2, false);
            }
            else if (version.search("Firefox") > -1) {
                alert("您使用的是火狐浏览器!");
                //使用DOM2级事件处理程序
                btn.addEventListener("click", handler1, false);
                btn.addEventListener("click", handler2, false);
            }
            else {
                alert(version);
                //使用DOM2级事件处理程序
                btn.addEventListener("click", handler1, false);
                btn.addEventListener("click", handler2, false);
            }
        }
        //---------给按钮绑定事件 End---------------

        //---------给按钮解除事件 Begin---------------
        var btncancel = document.getElementById("btnCancel");
        btncancel.onclick = function () {
            if (version.search("MSIE") > -1) {
                //使用IE事件处理程序
                btn.detachEvent("onclick", handler3);
                btn.detachEvent("onclick", handler4);
            }
            else if (version.search("Chrome") > -1) {
                //使用DOM2级事件处理程序
                btn.removeEventListener("click", handler1, false);
                btn.removeEventListener("click", handler2, false);
            }
            else if (version.search("Firefox") > -1) {
                //使用DOM2级事件处理程序
                btn.removeEventListener("click", handler1, false);
                btn.removeEventListener("click", handler2, false);
            }
            else {
                //使用DOM2级事件处理程序
                btn.removeEventListener("click", handler1, false);
                btn.removeEventListener("click", handler2, false);
            }
        }
        //---------给按钮解除事件 End---------------
    }

    -------------------- 封装事件处理程序 EventUtil.js --------------------------
    /**********事件处理程序**********
    *EventUtil.js
    *浏览器兼容,《高三》13章 P354
    *2014-12-8
    ********************************/
    var EventUtil = {
        addHandler: function (element, type, handler) {
            if (element.addEventListener) {
                element.addEventListener(type, handler, false);
            }
            else if (element.attachEvent) {
                element.attachEvent("on" + type, handler);
            }
            else {
                element["on" + type] = handler;
            }
        },
        removeHandler: function (element, type, handler) {
            if (element.removeEventListener) {
                element.removeEventListener(type, handler, false);
            }
            else if (element.detachEvent) {
                element.detachEvent("on" + type, handler);
            }
            else {
                element["on" + type] = null;
            }
        },

        getEvent: function (event) {
            return event ? event : window.event;
        },
        getTarget: function (event) {
            return event.target || event.srcElement;
        },
        preventDefault: function (event) {
            if (event.preventDefault) {
                event.preventDefault();
            }
            else {
                event.returnValue = false;
            }
        },

        /********由于IE不支持事件捕获,因此这个方法只适用于事件冒泡阶段*********/
        stopPropagation: function (event) {
            if (event.stopPropagation) {
                event.stopPropagation();
            }
            else {
                event.cancelBubble = true;
            }
        },

        /*****按键时触发,返回按键所代表字符的ASCII码******/
        getCharCode: function (event) {
            if (typeof event.charCode == "number") {
                return event.charCode;
            }
            else {
                return event.keyCode; //IE8之前、Opera
            }
        }
    }

  • 相关阅读:
    设计模式责任链模式(COR)
    设计模式享元模式(Flyweight)
    设计模式外观模式(Facade)
    设计模式桥接模式(Bridge)
    设计模式适配器(Adapter)
    设计模式解释器模式(Interpreter)
    Ext出来个3.0.1版本,不过不能免费下载了,郁闷
    150天成为JAVA高级程序员?
    Drools业务逻辑框架
    HQL中In的问题详解
  • 原文地址:https://www.cnblogs.com/zhaow/p/9754436.html
Copyright © 2011-2022 走看看