| 
									
										
										
										
											2014-11-05 07:47:38 -07:00
										 |  |  | # Online/Offline Event Detection
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Online and offline event detection can be implemented in the renderer process | 
					
						
							|  |  |  | using standard HTML5 APIs, as shown in the following example. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | _main.js_ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ```javascript | 
					
						
							| 
									
										
										
										
											2015-11-12 21:20:09 +08:00
										 |  |  | const electron = require('electron'); | 
					
						
							|  |  |  | const app = electron.app; | 
					
						
							|  |  |  | const BrowserWindow = electron.BrowserWindow; | 
					
						
							| 
									
										
										
										
											2014-11-05 07:47:38 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-11-12 21:20:09 +08:00
										 |  |  | var onlineStatusWindow; | 
					
						
							| 
									
										
										
										
											2014-11-05 07:47:38 -07:00
										 |  |  | app.on('ready', function() { | 
					
						
							|  |  |  |   onlineStatusWindow = new BrowserWindow({ width: 0, height: 0, show: false }); | 
					
						
							| 
									
										
										
										
											2015-11-13 16:03:40 +08:00
										 |  |  |   onlineStatusWindow.loadURL('file://' + __dirname + '/online-status.html'); | 
					
						
							| 
									
										
										
										
											2014-11-05 07:47:38 -07:00
										 |  |  | }); | 
					
						
							|  |  |  | ``` | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | _online-status.html_ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ```html | 
					
						
							| 
									
										
										
										
											2015-03-04 21:29:02 +08:00
										 |  |  | <!DOCTYPE html> | 
					
						
							| 
									
										
										
										
											2014-11-05 07:47:38 -07:00
										 |  |  | <html> | 
					
						
							| 
									
										
										
										
											2015-11-10 16:48:24 +08:00
										 |  |  | <body> | 
					
						
							|  |  |  | <script> | 
					
						
							|  |  |  |   var alertOnlineStatus = function() { | 
					
						
							|  |  |  |     window.alert(navigator.onLine ? 'online' : 'offline'); | 
					
						
							|  |  |  |   }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   window.addEventListener('online',  alertOnlineStatus); | 
					
						
							|  |  |  |   window.addEventListener('offline',  alertOnlineStatus); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   alertOnlineStatus(); | 
					
						
							|  |  |  | </script> | 
					
						
							|  |  |  | </body> | 
					
						
							| 
									
										
										
										
											2014-11-05 07:47:38 -07:00
										 |  |  | </html> | 
					
						
							|  |  |  | ``` | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-08-31 19:17:59 -07:00
										 |  |  | There may be instances where you want to respond to these events in the | 
					
						
							|  |  |  | main process as well. The main process however does not have a | 
					
						
							|  |  |  | `navigator` object and thus cannot detect these events directly. Using | 
					
						
							| 
									
										
										
										
											2015-04-16 11:31:12 +08:00
										 |  |  | Electron's inter-process communication utilities, the events can be forwarded | 
					
						
							| 
									
										
										
										
											2015-03-26 10:20:31 -05:00
										 |  |  | to the main process and handled as needed, as shown in the following example. | 
					
						
							| 
									
										
										
										
											2014-11-05 07:47:38 -07:00
										 |  |  | 
 | 
					
						
							|  |  |  | _main.js_ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ```javascript | 
					
						
							| 
									
										
										
										
											2015-11-12 21:20:09 +08:00
										 |  |  | const electron = require('electron'); | 
					
						
							|  |  |  | const app = electron.app; | 
					
						
							|  |  |  | const ipcMain = electron.ipcMain; | 
					
						
							|  |  |  | const BrowserWindow = electron.BrowserWindow; | 
					
						
							| 
									
										
										
										
											2014-11-05 07:47:38 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-11-12 21:20:09 +08:00
										 |  |  | var onlineStatusWindow; | 
					
						
							| 
									
										
										
										
											2014-11-05 07:47:38 -07:00
										 |  |  | app.on('ready', function() { | 
					
						
							|  |  |  |   onlineStatusWindow = new BrowserWindow({ width: 0, height: 0, show: false }); | 
					
						
							| 
									
										
										
										
											2015-11-13 16:03:40 +08:00
										 |  |  |   onlineStatusWindow.loadURL('file://' + __dirname + '/online-status.html'); | 
					
						
							| 
									
										
										
										
											2014-11-05 07:47:38 -07:00
										 |  |  | }); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-11-10 16:48:24 +08:00
										 |  |  | ipcMain.on('online-status-changed', function(event, status) { | 
					
						
							| 
									
										
										
										
											2014-11-05 07:47:38 -07:00
										 |  |  |   console.log(status); | 
					
						
							|  |  |  | }); | 
					
						
							|  |  |  | ``` | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | _online-status.html_ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ```html | 
					
						
							| 
									
										
										
										
											2015-03-04 21:29:02 +08:00
										 |  |  | <!DOCTYPE html> | 
					
						
							| 
									
										
										
										
											2014-11-05 07:47:38 -07:00
										 |  |  | <html> | 
					
						
							| 
									
										
										
										
											2015-11-10 16:48:24 +08:00
										 |  |  | <body> | 
					
						
							|  |  |  | <script> | 
					
						
							| 
									
										
										
										
											2015-11-12 21:20:09 +08:00
										 |  |  |   const ipcRenderer = require('electron').ipcRenderer; | 
					
						
							| 
									
										
										
										
											2015-11-10 16:48:24 +08:00
										 |  |  |   var updateOnlineStatus = function() { | 
					
						
							|  |  |  |     ipcRenderer.send('online-status-changed', navigator.onLine ? 'online' : 'offline'); | 
					
						
							|  |  |  |   }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   window.addEventListener('online',  updateOnlineStatus); | 
					
						
							|  |  |  |   window.addEventListener('offline',  updateOnlineStatus); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   updateOnlineStatus(); | 
					
						
							|  |  |  | </script> | 
					
						
							|  |  |  | </body> | 
					
						
							| 
									
										
										
										
											2014-11-05 07:47:38 -07:00
										 |  |  | </html> | 
					
						
							|  |  |  | ``` |