Electron - How to know when renderer window is ready

后端 未结 6 1175
执笔经年
执笔经年 2021-01-17 07:47

In my main process I create a renderer window:

var mainWindow = new BrowserWindow({
    height: 600,
    width: 800,
    x: 0,
    y: 0,
    frame: false,
           


        
相关标签:
6条回答
  • 2021-01-17 08:08

    Check this: https://github.com/electron/electron/blob/master/docs/api/web-contents.md

    You can use this event to know if your windows is ready in you main.js [CASE 1], but if want to know when your page is full loaded you should add an event in your index.html [CASE 2] and then you can attach a function that send a message to his parent Main.js telling him, he is ready, using IPCrenderer and IPCmain

    CASE 1

    main.js:

    mainWindows.webContents.on('did-finish-load',WindowsReady);
    
    function WindowsReady() {
        console.log('Ready');
    }
    

    CASE 2

    html:

    <script>
    const {ipcRenderer} = require('electron');
    document.addEventListener('DOMContentLoaded',pageLoaded);
    
     function pageLoaded(){
         alert('The page is loade');
         ipcRenderer.send('Am_I_Ready',"Im ready");
     }
    </script>
    

    Main.js:

    const {ipcMain} = electron;
    
    ipcMain.on('Am_I_Ready', doSomething)
    
    function doSomething(){
      console.log('Everything is ready.');
    }
    
    0 讨论(0)
  • 2021-01-17 08:21

    These days, you use the "ready-to-show" event.

    https://electronjs.org/docs/api/browser-window#using-ready-to-show-event

    0 讨论(0)
  • A listener on "mainWindow" doesn't worked for me. I used instead "mainWindow.webContents".

    mainWindow.webContents.once('dom-ready', () => {});
    
    0 讨论(0)
  • 2021-01-17 08:24

    Use mainWindow.webContents like this:

    mainWindow.webContents.on('did-finish-load', () => {
      mainWindow.webContents.send('message', 'hello world');
    }

    0 讨论(0)
  • 2021-01-17 08:25

    Have a look at the did-finish-load event mentioned in the Electron browser-window documentation.

    mainWindow.once('did-finish-load', () => {
       // Send Message
    })
    

    There seems to be a dom-ready event too.

    0 讨论(0)
  • 2021-01-17 08:26

    not mentioned in the previous answers, loadURL returns a promise that resolves at the same time the 'did-finish-load' event is fired; i.e., they're essentially equivalent, except one's a promise, and the other's a callback.

    0 讨论(0)
提交回复
热议问题