//事件的封装
var EventUtil = {
addHandler: function (element, type, handler) {//注册事件
if (element.addEventListener) {//非IE
element.addEventListener(type, handler, false);
}
else if (element.attachEvent) {//IE
element.attachEvent("on" + type, handler);
}
else {//dom0级
element["on" + type] = handler;
}
},
removeHandler: function (element, type, handler) {//取消注册事件
if (element.removeEventListener) {//非IE
element.removeEventListener(type, handler, false);
}
else if (element.detachEvent) {//IE
element.detachEvent("on" + type, handler);
}
else {//dom0级
element["on" + type] = null;
}
},
getEvent: function (event) {//返回event的引用
return event ? event : window.event;
},
getTarget: function (event) {//返回鼠标单击的目标对象
return event.target || event.srcElement;
},
preventDefault: function (event) {//取消默认事件(a的href,radio,checkbox,)
if (event.preventDefault) {
event.preventDefault();
}
else {
event.returnValue = false;
}
},
stopPropagation: function (event) {//因为这个EventUtil只支持冒泡,不支持事件捕获,所以这个方法只能阻止冒泡
if (event.stopPrapagation) {
event.stopPropagation();
}
else {
event.cancelBubble = true;
}
},
getRelatedTarget: function (event) {//获取相关元素
/*
页面中有一个div;当鼠标离开这个div时,事件的主目标是div,而相关元素是body.
mouseover:事件的主目标是获得光标的元素,而相关元素就是那个失去光标的元素.
mouseout:事件的主目标是失去光标的元素,而相关元素使获得光标的那个元素.
*/
if (event.relatedTarget) { return event.relatedTarget; }
else if (event.toElement) { return event.toElement; }
else if (event.fromElement) { return event.fromElement; }
else { return null; }
},
getButton: function (event) {//获取鼠标按钮的点击方式
if (document.implementation.hasFeature("MouseEvents", "2.0")) { return event.button; }
else {
switch (event.button) {
case 0:
case 1:
case 3:
case 5:
case 7:
return 0; //左击
case 2:
case 6:
return 2; //中间键
case 4:
return 1; //右击
}
}
}
}; //是否在线的判断:
window.onload = function () {
function addMessage(str) {
var oDiv = document.getElementById("line");
var oP = document.createElement("p");
oP.innerHTML = str;
oDiv.appendChild(oP);
}
EventUtil.addHandler(window, "online", function () {
addMessage("在线");
});
EventUtil.addHandler(window, "offline", function () {
addMessage("不在线");
});
}
 <body>
在线检测;
<div id="line"></div>
</body>

测试环境:

结果:

HTML5中对于网络是否断开的检测.很有意思哦的更多相关文章

  1. 在c#中利用keep-alive处理socket网络异常断开的方法

    本文摘自 http://www.z6688.com/info/57987-1.htm 最近我负责一个IM项目的开发,服务端和客户端采用TCP协议连接.服务端采用C#开发,客户端采用Delphi开发.在 ...

  2. 检测是否支持HTML5中的Video标签

    //检测是否支持HTML5 function checkVideo() { if (!!document.createElement('video').canPlayType) { var vidTe ...

  3. 带你认识HTML5中的WebSocket

    这篇文章主要介绍了带你认识HTML5中的WebSocket,本文讲解了HTML5 中的 WebSocket API 是个什么东东.HTML5 中的 WebSocket API 的用法.带Socket. ...

  4. HTML5中的服务器‘推送’技术 -Server-Sent Events

    转帖:http://www.developersky.net/thread-63-1-1.html 一直以来,HTTP协议都是严格遵循Request-Response模型的.客户端发送一个Reques ...

  5. html5中的video标签和audio标签

    不管是否承认,flash早已不像过往那样如日中天了.亚马逊全面放弃flash.苹果放弃flash.安卓也放弃了移动端的flash支持.事实上flash已经不太适合web开发了,因为HTML5中的vid ...

  6. HTML 5 应用程序缓存(Application Cache)cache manifest 文件使用 html5 中创建manifest缓存以及更新方法 一个manifest文件会创建一份缓存,不同的manifest文件其缓存的内容是互不干扰的

    HTML5 离线缓存-manifest简介 HTML 5 应用程序缓存 使用 HTML5,通过创建 cache manifest 文件,可以轻松地创建 web 应用的离线版本. 什么是应用程序缓存(A ...

  7. HTML5 中 40 个最重要的技术点

    介绍 我是一个ASP.NET MVC的开发者,最近在我找工作的时候被问到很多与HTML5相关的问题和新特性.所以以下40个重要的问题将帮助你复习HTML5相关的知识. 这些问题不是你得到工作的高效解决 ...

  8. 分析HTML5中WebSocket的原理

    目录结构   一.什么是Websocket websocket是html5提出的一个协议规范,参考rfc6455. 不过目前还都是在草案,没有成为标准,毕竟html5还在路上. websocket约定 ...

  9. HTML5中的Web Workers

    https://www.cnblogs.com/yanan-boke/p/6954390.html https://segmentfault.com/a/1190000014938305 HTML5 ...

随机推荐

  1. 三步解决 vue 按需加载

    1  webpack 的 output 配置 chunkFleName 树干名称: " chunks/[name]-[chunkhash:8].js  " 这一步是配合第三步, 生 ...

  2. 超炫jQuery测试答题功能

    推荐一款超炫jQuery测试答题功能插件 实例代码 <body> <div class="container" id="main"> & ...

  3. IntelliJ IDEA 2017.01配置jdk和tomcat

    之前开发Web项目都是用myeclipse或者eclipse,最近想用IDEA这个编辑器去配置一个Web项目,因为是新手,加上对界面的操作不熟练,所以在配置的过程中遇到了一些难题.最后配置成功,并且可 ...

  4. 日志的处理 —— 使用 log4j

    通过 log4j,日志信息不仅打印到 console,而且输出到指定文件,根据配置信息: <dependency> <groupId>log4j</groupId> ...

  5. TJU Problem 1065 Factorial

    注意数据范围,十位数以上就可以考虑long long 了,断点调试也十分重要. 原题: 1065.   Factorial Time Limit: 1.0 Seconds   Memory Limit ...

  6. css3动画与js动画的区别

    css与 js动画 优缺点比较   我们经常面临一个抉择:到底使用JavaScript还是CSS动画,下面做一下对比 JS动画 缺点:(1)JavaScript在浏览器的主线程中运行,而主线程中还有其 ...

  7. 使用webpack搭建vue项目中遇到的问题

    1:data数据文件经试验,需要放在生成的build文件夹中才能生效,但是应该把data文件夹先放在src中,然后如何定义config文件,让其复制过去? new CopyWebpackPlugin( ...

  8. NSDate 时间加减

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/pearlhuzhu/article/details/26227393 NSDate有个类别,例如以下 ...

  9. 多线程安全问题之Lock显示锁

    package com.hls.juc; import java.util.concurrent.locks.Lock;import java.util.concurrent.locks.Reentr ...

  10. juc包下的集合类

    import java.util.Iterator;import java.util.concurrent.CopyOnWriteArrayList; /** * 集合在多线程中同步的方式: * 1. ...