我需要知道如何打开当前窗口位置稍微偏移的新窗口(第一个窗口将在中心打开)
我的代码如下:
// index.js
const {app,BrowserWindow,Menu,MenuItem,dialog}=require('electron');
function window_open(path){
win = new BrowserWindow({show: false})
win.loadURL(path);
win.once('ready-to-show', () => {win.show()})
}
let win
app.on('ready',event=>{
'use strict';
window_open(`file://${__dirname}/index.html`)
});
这将打开中心的初始窗口。我也在新窗口命令(cmd + n)中传递此函数
{
label: 'File',
submenu: [
{label: 'New Window', accelerator: 'CmdOrCtrl+N', click: () => (
window_open(`file://${__dirname}/index.html`))
},
代码工作正常,除了每个窗口位于中心位置相同。我希望每个新窗口都能稍微偏移。
实现这一目标的最佳方式是什么?
答案 0 :(得分:1)
您可以在构造函数选项x
和y
中定义窗口的位置。可以使用getPosition()
检索当前活动窗口的位置,因此您可以从中定义新窗口的偏移量。
例如,请参阅此虚拟应用程序:
const { app, BrowserWindow } = require('electron')
let win = null
app.once('ready', () => {
const openWindow = () => {
const opts = {
show: false
}
if (win) {
const pos = win.getPosition()
Object.assign(opts, {
x: pos[0] + 10,
y: pos[1] + 10
})
}
win = new BrowserWindow(opts)
win.loadURL('http://google.com')
let thisWin = win
win.once('ready-to-show', () => {
thisWin.show()
})
}
setInterval(openWindow, 5000)
})
答案 1 :(得分:1)
我了解到我需要这两件事:
结合@ pergy的响应,我得到了以下代码,如果有任何偏移窗口并从其位置偏移新窗口,则会找到焦点窗口,否则在中心创建一个新窗口:
let win = null
function window_open(path){
const opts = {show: false}
if (BrowserWindow.getFocusedWindow()) {
current_win = BrowserWindow.getFocusedWindow()
const pos = current_win.getPosition()
Object.assign(opts, {
x: pos[0] + 22,
y: pos[1] + 22
})
}
win = new BrowserWindow(opts)
win.loadURL(path)
win.once('ready-to-show', () => {win.show()})
}
app.once('ready',event=>{
window_open(`file://${__dirname}/index.html`)
});
这是我在原始问题中所要求的,所以我决定发布这个。但是,我觉得产生新窗口的速度很慢,所以我不会将此标记为答案,看看是否有更快的方法。
<强>更新强>
我发现等待'ready-to-show'
是因为等待准备状态导致它变慢。我接受了这个作为答案,因为我觉得速度问题取决于内容而不是浏览器。随意添加评论,因为我还是张开耳朵。