electron [Feature Request]: Add custom labels to BrowserWindow instances

zxlwwiss  于 6个月前  发布在  Electron
关注(0)|答案(1)|浏览(70)

预检清单

问题描述

在使用多个窗口创建 Electron 应用程序时,很难区分这些窗口。
Electron API 提供了一种识别 Electron 窗口的方法,除了它的 id(只是一个数字)、它的标题(可能会随着 i18n 或应用程序状态而改变)或其 webContents 的一些方面(如 URL,可能会改变)。

建议的解决方案

向 BrowserWindow 选项添加一个简单的 "label"(字符串)属性,以便开发人员可以识别和区分应用程序中的窗口。

function createWindows() {
  const win = new BrowserWindow({
    label: 'first_window',
  })
  win.loadURL('https://example.com')

  const win2 = new BrowserWindow({
    label: 'second_window',
  })
  win2.loadURL('https://example2.com')

  const win3 = new BrowserWindow({
    label: 'third_window',
  })
  win3.loadURL('https://example3.com')
}

createWindows()

function updateWindow1(state: State) {
  const windows = BrowserWindow.getAllWindows()
  const win1 = windows.find((w) => w.label === 'first_window'))
  if (win1) {
    win1.webContents.send('state', state)
  }
}

考虑的其他方案

更灵活的解决方案是使用一个 "labels" 属性,该属性接受一个字符串数组。这可能是用唯一和非唯一标识符标记窗口的一种方法。

function createWindows() {
  const win = new BrowserWindow({
    labels: ['first_window', 'controller'],
  })
  win.loadURL('https://example.com')

  const win2 = new BrowserWindow({
    labels: ['second_window', 'output'],
  })
  win2.loadURL('https://example2.com')

  const win3 = new BrowserWindow({
    labels: ['third_window', 'output'],
  })
  win3.loadURL('https://example3.com')
}

createWindows()

function updateWindow1(state: State) {
  const windows = BrowserWindow.getAllWindows()
  const win1 = windows.find((w) => w.labels.includes('first_window'))
  if (win1) {
    win1.webContents.send('state', state)
  }
}

其他信息

  • 无响应*
kulphzqa

kulphzqa1#

你能帮我更多地解决这个问题吗?我是开源的新手,我理解你的意思了吗?我应该以什么方式为这个做出贡献?

相关问题