1 //事件的封装
2 var EventUtil = {
3 addHandler: function (element, type, handler) {//注册事件
4 if (element.addEventListener) {//非IE
5 element.addEventListener(type, handler, false);
6 }
7 else if (element.attachEvent) {//IE
8 element.attachEvent("on" + type, handler);
9 }
10 else {//dom0级
11 element["on" + type] = handler;
12 }
13 },
14 removeHandler: function (element, type, handler) {//取消注册事件
15 if (element.removeEventListener) {//非IE
16 element.removeEventListener(type, handler, false);
17 }
18 else if (element.detachEvent) {//IE
19 element.detachEvent("on" + type, handler);
20 }
21 else {//dom0级
22 element["on" + type] = null;
23 }
24 },
25 getEvent: function (event) {//返回event的引用
26 return event ? event : window.event;
27 },
28 getTarget: function (event) {//返回鼠标单击的目标对象
29 return event.target || event.srcElement;
30 },
31 preventDefault: function (event) {//取消默认事件(a的href,radio,checkbox,)
32 if (event.preventDefault) {
33 event.preventDefault();
34 }
35 else {
36 event.returnValue = false;
37 }
38 },
39 stopPropagation: function (event) {//因为这个EventUtil只支持冒泡,不支持事件捕获,所以这个方法只能阻止冒泡
40 if (event.stopPrapagation) {
41 event.stopPropagation();
42 }
43 else {
44 event.cancelBubble = true;
45 }
46 },
47 getRelatedTarget: function (event) {//获取相关元素
48 /*
49 页面中有一个div;当鼠标离开这个div时,事件的主目标是div,而相关元素是body.
50 mouseover:事件的主目标是获得光标的元素,而相关元素就是那个失去光标的元素.
51 mouseout:事件的主目标是失去光标的元素,而相关元素使获得光标的那个元素.
52 */
53 if (event.relatedTarget) { return event.relatedTarget; }
54 else if (event.toElement) { return event.toElement; }
55 else if (event.fromElement) { return event.fromElement; }
56 else { return null; }
57 },
58 getButton: function (event) {//获取鼠标按钮的点击方式
59 if (document.implementation.hasFeature("MouseEvents", "2.0")) { return event.button; }
60 else {
61 switch (event.button) {
62 case 0:
63 case 1:
64 case 3:
65 case 5:
66 case 7:
67 return 0; //左击
68 case 2:
69 case 6:
70 return 2; //中间键
71 case 4:
72 return 1; //右击
73 }
74 }
75 }
76 };
77
78
79 //是否在线的判断:
80 window.onload = function () {
81 function addMessage(str) {
82 var oDiv = document.getElementById("line");
83 var oP = document.createElement("p");
84 oP.innerHTML = str;
85 oDiv.appendChild(oP);
86 }
87 EventUtil.addHandler(window, "online", function () {
88 addMessage("在线");
89 });
90 EventUtil.addHandler(window, "offline", function () {
91 addMessage("不在线");
92 });
93 }
1 <body>
2 在线检测;
3 <div id="line"></div>
4 </body>

测试环境:

结果:

更多相关文章

  1. HTML5实战与剖析之媒体元素(1、video标签和audio标签简介)
  2. 迭代XML元素并将元素推送到数组中
  3. 来自多个文件的相同元素DomDocument loadHTMLFile PHP
  4. 快速使用数组的最近元素来确定新元素是否唯一
  5. 如何通过.click jQuery函数检索html元素值与从MySQL检索的数据?
  6. 如何获取关联数组的当前元素数?
  7. 如何在不更改其键值的情况下删除数组的第一个元素?
  8. 如何使用变量访问多维数组中的某些元素?
  9. 用一个听众听多个事件?

随机推荐

  1. 自定义View系列教程02--onMeasure源码详
  2. Android学习小结
  3. 关于Android(安卓)LCD和键盘背光亮度 .
  4. Android(安卓)编译系统 --- 版本信息
  5. [置顶] Android应用开发 第二讲:Android系
  6. [转载]Android及Robotium学习总结【环境
  7. Android RIL 架构
  8. Android 4.4 (KitKat) SMS Apis Change—
  9. 深入剖析Android消息机制
  10. Android 应用程序消息处理机制(Looper、Ha