# 在线/离线事件探测
使用标准 HTML5 APIs 可以实现在线和离线事件的探测,就像以下例子:
*main.js*
```javascript
var app = require('app');
var BrowserWindow = require('browser-window');
var onlineStatusWindow;
app.on('ready', function() {
onlineStatusWindow = new BrowserWindow({ width: 0, height: 0, show: false });
onlineStatusWindow.loadURL('file://' + __dirname + '/online-status.html');
});
```
*online-status.html*
```html
<!DOCTYPE html>
<html>
<body>
<script>
var alertOnlineStatus = function() {
window.alert(navigator.onLine ? 'online' : 'offline');
};
window.addEventListener('online', alertOnlineStatus);
window.addEventListener('offline', alertOnlineStatus);
alertOnlineStatus();
</script>
</body>
</html>
```
也会有人想要在主进程也有回应这些事件的实例。然后主进程没有 `navigator` 对象因此不能直接探测在线还是离线。使用 Electron 的进程间通讯工具,事件就可以在主进程被使,就像下面的例子:
*main.js*
```javascript
var app = require('app');
var ipc = require('ipc');
var BrowserWindow = require('browser-window');
var onlineStatusWindow;
app.on('ready', function() {
onlineStatusWindow = new BrowserWindow({ width: 0, height: 0, show: false });
onlineStatusWindow.loadURL('file://' + __dirname + '/online-status.html');
});
ipc.on('online-status-changed', function(event, status) {
console.log(status);
});
```
*online-status.html*
```html
<!DOCTYPE html>
<html>
<body>
<script>
var ipc = require('ipc');
var updateOnlineStatus = function() {
ipc.send('online-status-changed', navigator.onLine ? 'online' : 'offline');
};
window.addEventListener('online', updateOnlineStatus);
window.addEventListener('offline', updateOnlineStatus);
updateOnlineStatus();
</script>
</body>
</html>
```
- 介绍
- 常见问题
- Electron 常见问题
- 向导
- 支持平台
- 分发应用
- 提交应用到 Mac App Store
- 打包应用
- 使用 Node 原生模块
- 主进程调试
- 使用 Selenium 和 WebDriver
- 使用开发人员工具扩展
- 使用 Pepper Flash 插件
- 使用 Widevine CDM 插件
- 教程
- 快速入门
- 桌面环境集成
- 在线/离线事件探测
- API文档
- 简介
- 进程对象
- 支持的 Chrome 命令行开关
- 环境变量
- 自定义的 DOM 元素
- File 对象
- &lt;webview&gt; 标签
- window.open 函数
- 在主进程内可用的模块
- app
- autoUpdater
- BrowserWindow
- contentTracing
- dialog
- globalShortcut
- ipcMain
- Menu
- MenuItem
- powerMonitor
- powerSaveBlocker
- protocol
- session
- webContents
- Tray
- 在渲染进程(网页)内可用的模块
- desktopCapturer
- ipcRenderer
- remote
- webFrame
- 在两种进程中都可用的模块
- clipboard
- crashReporter
- nativeImage
- screen
- shell
- 开发
- 代码规范
- 源码目录结构
- 与 NW.js(原 node-webkit)在技术上的差异
- 构建系统概览
- 构建步骤(OS X)
- 构建步骤(Windows)
- 构建步骤(Linux)
- 在调试中使用 Symbol Server