win.reload显示在电子中显示空白的白色窗口

问题描述 投票:0回答:1

网络重新连接后,我需要重新加载网站/应用程序。因此,我在重新连接后使用了win.reload,但重新加载后却显示了空白的黑屏

我试图重新创建窗口,但是它给了我相同的输出。我报告了另一个问题here

重新加载后我发现window.location.href设置为“ chrome-error:// chromewebdata /”

此示例代码来自main.js

  let mainWindow = null;
  let offlineWindow = null;
  let loadingwindow = null;
  let mainWindowWidth = 1100;
  let mainWindowHeight = 650;

  var nativeApp = {
    appUrl: "https://google.com",
    connected: false
  }

  function createWindow () {
    // Create the browser window.
    mainWindow = new BrowserWindow({
      webPreferences: {
        nodeIntegration: false,
        preload: path.join(app.getAppPath(), 'preload.js')
      },
      minWidth: mainWindowWidth,
      width: mainWindowWidth,
      minHeight: mainWindowHeight,
      height: mainWindowHeight,
      show: false
    });

    createLoadingWindow();

    mainWindow.once('ready-to-show', () => {
      closeLoadingWindow();
      mainWindow.show();
    });

   mainWindow.setMenu(null);
   mainWindow.loadURL(nativeApp.appUrl);
   mainWindow.webContents.openDevTools();
 }

  function createLoadingWindow(){
    // codes to create the loading window
    // .....
  }

  function createOfflineWindow(){
    // codes to create the offline window
    //....
  }

  function checkAndConnect() {
    checkInternet(function (connected) {
      if (!connected) {
        if (!offlineWindow) { createOfflineWindow(); }
      } else {
        if (offlineWindow) {
          offlineWindow.close();
          mainWindow.reload();
        }
      }
      nativeApp.connected = connected;
    });
  }

  function checkInternet(callback) {
    if(navigator.onLine){
      return callback(true);
    }
    return callback(false);
  }

重新连接后,我需要重新加载网站/应用程序。我的代码有什么问题吗?还是电子的虫子?

javascript electron
1个回答
0
投票

这是一个旧线程,但是如果有人遇到相同的问题,您可以通过在主js文件中添加以下内容来修复它:

function createMainWindow () {
  mainWindow = new BrowserWindow({
    width: 1280,
    height: 720,
    ...
  })

  if (process.env.WEBPACK_DEV_SERVER_URL) {
    if (!process.env.IS_TEST) { 
      mainWindow.webContents.openDevTools() 
    }
  } 
  else {
    createProtocol('app')
    mainWindow.loadURL('app://./index.html')

    // Create a "fail-load" listener
    if (process.env.NODE_ENV === 'production') {
      mainWindow.webContents.on('did-fail-load', () => {
        // Load the index URL the same way you load it above
        mainWindow.loadURL('app://./index.html')
      })
    }
  }
...
© www.soinside.com 2019 - 2024. All rights reserved.