<!DOCTYPE html> <html> <head> <meta charset="UTF-8" /> <title>Information Dialog</title> </head> <body> <div class="section-wrapper"> <h1>Use system dialogs</h1> <h3> The <code>dialog</code> module in Electron allows you to use native system dialogs for opening files or directories, saving a file or displaying informational messages. </h3> <p> This is a main process module because this process is more efficient with native utilities and it allows the call to happen without interrupting the visible elements in your page's renderer process. </p> <p> Open the <a href="https://www.electronjs.org/docs/latest/api/dialog/"> full API documentation (opens in new window) </a> in your browser. </p> </div> <div> <div> <h2>Information Dialog</h2> <div> <div> <button id="information-dialog"> View Demo </button> <span id="info-selection"></span> </div> <p> In this demo, the <code>ipc</code> module is used to send a message from the renderer process instructing the main process to launch the information dialog. Options may be provided for responses which can then be relayed back to the renderer process. </p> <p> Note: The <code>title</code> property is not displayed in macOS. </p> <p> An information dialog can contain an icon, your choice of buttons, title and message. </p> <h5>Renderer Process</h5> <pre> <code> const {ipcRenderer} = require('electron') const informationBtn = document.getElementById('information-dialog') informationBtn.addEventListener('click', (event) => { ipcRenderer.send('open-information-dialog') }) ipcRenderer.on('information-dialog-selection', (event, index) => { let message = 'You selected ' if (index === 0) message += 'yes.' else message += 'no.' document.getElementById('info-selection').innerHTML = message }) </code> </pre> <h5>Main Process</h5> <pre> <code> const {ipcMain, dialog} = require('electron') ipcMain.on('open-information-dialog', (event) => { const options = { type: 'info', title: 'Information', message: "This is an information dialog. Isn't it nice?", buttons: ['Yes', 'No'] } dialog.showMessageBox(options, (index) => { event.sender.send('information-dialog-selection', index) }) }) </code> </pre> </div> </div> </div> <script src="renderer.js"></script> </body> </html>