1
1
; ( function ( w ) {
2
2
var xmlhttp = new XMLHttpRequest ( ) ,
3
- time = 2000 , //设置轮询时间
4
- url = "http://********.com/online.php" ;
5
- //当 `url`为空的时候 默认所有浏览器使用 onLine 和 offline事件
3
+ time = 2000 , //设置轮询时间
4
+ url = "http://********.com/online.php" ;
5
+ //当 `url`为空的时候 默认所有浏览器使用 onLine 和 offline事件
6
6
7
7
w . onlinenetwork = w . onlinenetwork || { } ;
8
- w . onlinenetwork = {
9
- setStatus :function ( newStatus ) {
10
- this . eventStatus ( newStatus ) ;
11
- w . onLine = newStatus ;
12
- } ,
13
- //状态改变执行事件
14
- eventStatus : function ( newStatus ) {
15
- if ( newStatus === true && w . onLineHandler !== undefined && ( w . onLine !== true || this . handlerFired === false ) ) {
16
- w . onLineHandler ( ) ;
17
- }
18
- if ( newStatus === false && w . offLineHandler !== undefined && ( w . onLine !== false || this . handlerFired === false ) ) {
19
- w . offLineHandler ( ) ;
20
- }
21
- this . handlerFired = true ;
22
- } ,
23
- //http请求
24
- XMLHttpLogic :function ( async ) {
25
- var url = this . getOnLineCheckURL ( ) ,
8
+ w . onlinenetwork = {
9
+ setStatus :function ( newStatus ) {
10
+ this . eventStatus ( newStatus ) ;
11
+ w . onLine = newStatus ;
12
+ } ,
13
+ //状态改变执行事件
14
+ eventStatus : function ( newStatus ) {
15
+ if ( newStatus === true && w . onLineHandler !== undefined && ( w . onLine !== true || this . handlerFired === false ) ) {
16
+ w . onLineHandler ( ) ;
17
+ }
18
+ if ( newStatus === false && w . offLineHandler !== undefined && ( w . onLine !== false || this . handlerFired === false ) ) {
19
+ w . offLineHandler ( ) ;
20
+ }
21
+ this . handlerFired = true ;
22
+ } ,
23
+ //http请求
24
+ XMLHttpLogic :function ( async ) {
25
+ var url = this . getOnLineCheckURL ( ) ,
26
26
self = this ;
27
27
if ( async ) {
28
28
xmlhttp . onreadystatechange = function ( ) {
37
37
} else {
38
38
xmlhttp . onreadystatechange = undefined ;
39
39
}
40
- xmlhttp . open ( "HEAD" , url , async )
40
+ xmlhttp . open ( "HEAD" , url , async )
41
41
this . tryToSend ( xmlhttp ) ;
42
- } ,
42
+ } ,
43
43
processXmlhttpStatus : function ( ) {
44
44
var tempOnLine = w . onlinenetwork . verifyStatus ( xmlhttp . status ) ;
45
45
this . setStatus ( tempOnLine ) ;
56
56
verifyStatus :function ( status ) {
57
57
return status === 200 ;
58
58
} ,
59
- //url加上随机数
60
- getOnLineCheckURL : function ( ) {
61
- return url + '?' + Math . floor ( Math . random ( ) * 1000000 ) ;
62
- } ,
63
- //非 chrome 和 Safari 浏览器不停的检查,嘿嘿
64
- startCheck :function ( ) {
65
- setInterval ( "window.onlinenetwork.XMLHttpLogic(true)" , time ) ;
66
- } ,
59
+ //url加上随机数
60
+ getOnLineCheckURL : function ( ) {
61
+ return url + '?' + Math . floor ( Math . random ( ) * 1000000 ) ;
62
+ } ,
63
+ //非 chrome 和 Safari 浏览器不停的检查,嘿嘿
64
+ startCheck :function ( ) {
65
+ setInterval ( "window.onlinenetwork.XMLHttpLogic(true)" , time ) ;
66
+ } ,
67
67
//第一次检查是否在线
68
68
checkOnLine :function ( ) {
69
69
this . XMLHttpLogic ( false )
75
75
this . setStatus ( true ) ;
76
76
}
77
77
} ,
78
- //判断浏览器
79
- getExplorer : function ( newStatus ) {
80
- var explorer = window . navigator . userAgent ;
78
+ //判断浏览器
79
+ getExplorer : function ( newStatus ) {
80
+ var explorer = window . navigator . userAgent ;
81
81
this . setStatus ( newStatus )
82
- if ( ( explorer . indexOf ( 'Firefox' ) >= 0 || explorer . indexOf ( 'MSIE' ) >= 0 ) && url ) {
83
- console . log ( "test:1" )
82
+ if ( ( explorer . indexOf ( 'Firefox' ) >= 0 || explorer . indexOf ( 'MSIE' ) >= 0 ) && url ) {
83
+ console . log ( "test:1" )
84
84
this . checkOnLine ( )
85
85
this . setStatus ( newStatus )
86
86
this . startCheck ( newStatus )
87
87
} else {
88
- console . log ( "test:2" )
88
+ console . log ( "test:2" )
89
89
this . eventStatus ( newStatus )
90
- }
91
- } ,
92
- //绑定事件
93
- addEvent : function ( obj , type , callback ) {
94
- if ( window . attachEvent ) obj . attachEvent ( 'on' + type , callback ) ;
95
- else obj . addEventListener ( type , callback ) ;
96
- } ,
97
- init :function ( ) {
90
+ }
91
+ } ,
92
+ //绑定事件
93
+ addEvent : function ( obj , type , callback ) {
94
+ if ( window . attachEvent ) obj . attachEvent ( 'on' + type , callback ) ;
95
+ else obj . addEventListener ( type , callback ) ;
96
+ } ,
97
+ init :function ( ) {
98
98
99
- var self = this
99
+ var self = this
100
100
//获取当前状态
101
- this . addEvent ( w , 'load' , function ( ) {
101
+ this . addEvent ( w , 'load' , function ( ) {
102
102
self . eventStatus ( w . onLine ) ;
103
103
} ) ;
104
104
105
- //侦听 online 事件
106
- this . addEvent ( w , 'online' , function ( ) { self . getExplorer ( true ) } ) ;
105
+ //侦听 online 事件
106
+ this . addEvent ( w , 'online' , function ( ) { self . getExplorer ( true ) } ) ;
107
107
108
- //侦听 offline 事件
109
- this . addEvent ( w , 'offline' , function ( ) { self . getExplorer ( false ) } ) ;
108
+ //侦听 offline 事件
109
+ this . addEvent ( w , 'offline' , function ( ) { self . getExplorer ( false ) } ) ;
110
110
111
111
self . getExplorer ( true )
112
- this . handlerFired = false ;
113
- }
114
- }
115
- w . onlinenetwork . init ( )
116
-
112
+ this . handlerFired = false ;
113
+ }
114
+ }
115
+ w . onlinenetwork . init ( )
116
+
117
117
} ) ( window ) ;
0 commit comments