在线/离线事件探测
使用标准 HTML5 APIs 可以实现在线和离线事件的探测,就像以下例子:
main.js
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
<!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
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
<!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>