zoukankan      html  css  js  c++  java
  • Javascript跨浏览器的事件对象

    一、跨浏览器的事件对象

    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;
            }
        },
        //获取事件
        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;
            }
        },
        ///移除事件
        removeHandler: function (element, type, handler) {
            if (element.removeEvenListener) {
                element.removeEvenListener(type, handler, false);
            } else if (element.detachEvent) {
                element.detachEvent("on" + type, handler);
            } else {
                element["on" + type] = null;
            }
        },
        stopPropagation: function (event) {
            if (event.stopPropagation) {
                event.stopPropagation();
            }
            else {
                event.cancelBubble = true;
            }
        }
    };

    二、右键菜单demo

    <!DOCTYPE html>
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <title></title>
    </head>
    <body>
        <div id="myDiv">
            点击右键
        </div>
        <ul id="myMenu" style="position: absolute; visibility: hidden; background-color: silver;">
            <li><a href="http://baidu.com">baidu.com</a>
            </li>
            <li><a href="http://zhihu.com">zhihu.com</a>
            </li>
        </ul>
        <script src="../Scripts/EventUtil.js"></script>
        <script>
            EventUtil.addHandler(window, "load", function (event) {
                var div = document.getElementById("myDiv");
                EventUtil.addHandler(div, "contextmenu", function (event) {
                    event = EventUtil.getEvent(event);
                    EventUtil.preventDefault(event);
    
                    var menu = document.getElementById("myMenu");
                    menu.style.left = event.clientX + "px";
                    menu.style.top = event.clientY + "px";
                    menu.style.visibility = "visible";
    
                });
    
                EventUtil.addHandler(document, "click", function (event) {
                    document.getElementById("myMenu").style.visibility = "hidden";
                });
            })
    
            EventUtil.addHandler(window, "beforeunload", function (event) {
                event = EventUtil.getEvent(event);
                var message = "您确定要离开当前页";
                event.returnValue = message;
                return message;
            });
        </script>
    </body>
    </html>
  • 相关阅读:
    硬件的快速迭代开发
    DAC8775芯片的使用
    单片机引脚复用使用不当会导致bug
    单片机为32bit时运算中64bit运算中遇到的bug及其规避手段
    UDS文档的阅读
    DAC124S085芯片的使用
    LSD低边驱动芯片的特点
    小时候的玩具激光灯拆解
    飞思卡尔系列单片机的censorship的使用
    TypeScript学习小结
  • 原文地址:https://www.cnblogs.com/ricky-wang/p/6849029.html
Copyright © 2011-2022 走看看