如何在电子对话框

时间:2017-10-24 09:54:01

标签: javascript dialog electron textfield

我已经调用了带有示例消息和按钮字段的对话框来弹出,但另外我需要在同一个对话框中包含两个文本字段,但我无法做到。

任何人都可以通过合适的答案解决我的问题。

这里是我在电子申请中的示例代码:

dialog.showMessageBox({ message: "Hello There :-)",
        buttons: ["OK"] }); 

2 个答案:

答案 0 :(得分:1)

Electron doesn't support prompt dialogs.不要window.prompt

一种解决方案可能是在渲染器进程中使用sweetalert或其他一些npm包。如果您需要从主进程中调用它,可以使用ipcMain将其发送到渲染器。

(未经测试)示例

主要流程:

const { ipcMain } = require('electron')

let promptHandler

ipcMain.on('prompt-handler-registered', event => promptHandler = event.sender)

// Create Promise to make it easier to get the promptHandler
const getPromptHandler = new Promise((resolve) => {
  const watcher = setInterval(() => {
    // You'll probably want to set a timeout here
    if (!promptHandler) return

    resolve(promptHandler)
    clearInterval(watcher)
  }, 200)
})

...

// When you want to prompt the user
getPromptHandler
  .then(ph => ph.send('display-prompt', {
      title: 'Whats your name?',
      ...
    })
  )

渲染过程:

const { ipcRenderer } = require('electron')
const swal = require('sweetalert2')

function displayPrompt(data) {
  swal({
    title: data.title,
    input: 'text',
  })
}

ipcRenderer.send('prompt-handler-registered')

ipcRenderer.on('display-prompt', displayPrompt)

答案 1 :(得分:0)

您需要实现自己的对话框系统,以显示包含两个文本字段的对话框。 Electron中的dialog API不支持该程度的自定义对话框。