Установка заполнителя изображения / HTML, когда электрон не может подключиться к URL - PullRequest
0 голосов
/ 20 ноября 2018

Я пытаюсь отобразить изображение в своем электронном приложении, которое указало бы, что приложение не может загрузить URL.Кроме того, приложение должно повторять попытки подключения к серверу каждые 3 секунды.В основном, поведение, которое я ищу, похоже на Chrome, когда вы получаете этот экран:

До сих пор мне удалось получить часть, где приложение постоянно хранитпытается подключиться, но я не могу понять, как отобразить пользовательский HTML в случае сбоя подключения.Это то, что я до сих пор:

const electron = require('electron');


function connect(win, host, port) {
    win.loadURL(`http://${host}:${port}`);
}


function main() {
    const win = new electron.BrowserWindow({
        icon: __dirname + '/favicon.ico',
        show: false
    });
    const host = process.argv.includes('--host') ? process.argv[process.argv.findIndex(arg => arg == '--host') + 1] : 'localhost';
    const port = process.argv.includes('--port') ? process.argv[process.argv.findIndex(arg => arg == '--port') + 1] : '12345';
    global.argv = process.argv;
    global.env = process.env;
    connect(win, host, port);

    win.webContents.on('did-fail-load', () => {
        setTimeout(() => connect(win, host, port), 3000);
    });

    win.once('ready-to-show', () => {
        win.show();
        win.focus();
    });
}


electron.app.on('ready', main);

Я пытался передать пользовательский HTML через URL-адрес данных HTML (используя loadURL), но каждый раз, когда я снова использую loadURL при повторном подключении ксервер, «пользовательский» HTML перезаписывается белым экраном.

1 Ответ

0 голосов
/ 20 ноября 2018

Вы в основном там.Все, что осталось, это загрузить страницу с ошибкой.

Скажем, у вас есть error.html:

<body>
  <h1>Error connecting</h1>
</body>

Ваш основной код может выглядеть так:

let mainWindow
function createWindow () {
  mainWindow = new BrowserWindow({width: 800, height: 600})

  mainWindow.webContents.on("did-fail-load", () => {
      mainWindow.loadFile("error.html");
      setTimeout(connect, 3000);
  });

  connect();
}

function connect() {
    console.log("trying to connect");
    mainWindow.loadURL("https://madeupsitexxxxxxxxxxx.com");
}

app.on('ready', createWindow);   
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...