J'utilise Electron + Vue pour créer mon application. J'envoie un message au processus principal pour créer une nouvelle fenêtre. Dans la méthode principale, j'essaie de transmettre un message à la fenêtre nouvellement créée, mais cela ne fonctionne pas.

La méthode que j'appelle dans mon composant Home, qui se trouve dans la fenêtre principale du navigateur

ipcRenderer.send("criar-janela-instalcao");

C'est la méthode sur le processus principal

ipcMain.on('criar-janela-instalcao', () => {

  if (!janelaInstalacao) {
    janelaInstalacao = new BrowserWindow({
      height: 500,
      width: 500,
      webPreferences: {
        nodeIntegration: true,
        enableRemoteModule: true,
      },
      show: true,
    });

    janelaInstalacao.loadURL(urlJanelaInstalacao);
    janelaInstalacao.on("closed", () => (janelaInstalacao = null));
    janelaInstalacao.on('did-finish-load', () => {
      janelaInstalacao.webContents.send('message', 'Hello new window');
    })
  }
})

Et c'est l'auditeur que j'ai à l'intérieur du crochet créé dans mon composant "DownloadInstalacao". Ce composant se trouve dans la fenêtre du navigateur que je viens d'ouvrir :

  created() {
    ipcRenderer.on("message", (event, message) => {
      console.log(message);
    });
  },

La fenêtre s'ouvre et se charge correctement, mais rien ne s'affiche dans la console.

P.S. : Les variables "urlJaelaInstalacao" et "janelaInstalacao" que j'ai omises car le chargement de la page a bien fonctionné.

0
Carolina de Moraes 14 oct. 2020 à 20:20

1 réponse

Meilleure réponse

Il s'avère que l'événement 'did-finish-load' doit être appliqué à l'objet webContents de mon BrowserWindow, et non au BrowserWindow lui-même

La façon dont je faisais

    janelaInstalacao.on('did-finish-load', () => {
      janelaInstalacao.webContents.send('message', 'Hello new window');
    })

La bonne façon de le faire

  janelaInstalacao.webContents.on('did-finish-load', () => {
      janelaInstalacao.webContents.send('message', 'Hello new window');
    })
1
Carolina de Moraes 30 oct. 2020 à 14:47