W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
在渲染進(jìn)程中, Online and offline 事件檢測(cè),是通過(guò)標(biāo)準(zhǔn) HTML5 API 中 navigator.onLine
屬性來(lái)實(shí)現(xiàn)的。 脫機(jī)時(shí) (從網(wǎng)絡(luò)斷開(kāi)), navigator.onLine
屬性將返回 false
, 除此之外都返回true
。 由于所有其他條件都返回 true
, 因此必須警惕信息誤報(bào), 因?yàn)槲覀儾荒鼙WC true
的情況下 Electron 一定可以訪問(wèn) internet。 例如當(dāng)軟件運(yùn)行在一個(gè)虛擬網(wǎng)絡(luò)適配器始終為“connected”的虛擬機(jī)中時(shí),Electron就不能訪問(wèn)Internet。 因此,如果你想確保 Electron 真實(shí)的網(wǎng)絡(luò)訪問(wèn)狀態(tài),你應(yīng)該開(kāi)發(fā)額外的檢測(cè)方法。
使用標(biāo)準(zhǔn) HTML5 APIs 可以實(shí)現(xiàn)在線和離線事件的探測(cè),就像以下例子:
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>
也會(huì)有人想要在主進(jìn)程也有回應(yīng)這些事件的實(shí)例。然后主進(jìn)程沒(méi)有 navigator
對(duì)象因此不能直接探測(cè)在線還是離線。使用 Electron 的進(jìn)程間通訊工具,事件就可以在主進(jìn)程被使,就像下面的例子:
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>
注意:如果電腦啟動(dòng)了虛擬機(jī)的網(wǎng)卡驅(qū)動(dòng),可能會(huì)出現(xiàn)離線探測(cè)不準(zhǔn)確.
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: