javascript - 在无框 Electron 窗口中使子窗口与父窗口一起移动

标签 javascript html css client electron

我目前正在使用 ElectronJS 开发一个无框架应用程序,我试图让父窗口处理拖动、最小化、最大化和退出,以及子窗口的 Controller 来处理所有的内容。但是,当我在 main.js 中将父窗口设置为主窗口时,当我移动父窗口时,内容窗口将保持在原位。

下面是我的 main.js:

const electron = require('electron');
const url = require('url');
const path = require('path');

const {app, BrowserWindow, Menu} = electron;

let mainWindow;
let contentWindow;

app.on('ready', function createWindow(){
    //Create window
    mainWindow = new BrowserWindow({
        width: 1280,
        height: 720,
        frame: false
    })
    contentWindow = new BrowserWindow({
        width: 1280,
        height: 720,
        frame: false,
        parent: mainWindow
    })

    //load html for window
    mainWindow.loadURL(url.format({
        pathname: path.join(__dirname, 'assets/html/mainWindow.html'),
        protocol:'file:',
        slashes: true
    }));

    contentWindow.loadURL(url.format({
        pathname: path.join(__dirname, 'assets/html/contentWindow.html'),
        protocol:'file:',
        slashes: true
    }));
});

我的 mainWindow.html 中的一个 div 有 -webkit-app-region: Drag; 以允许它像普通窗口一样充当顶部栏。基本上我希望这可以移动两个窗口。

最佳答案

就像 @Dennis L也就是说,使用 docs 中提供的 move 事件。我虽然只支持mac,但我用的是windows。一旦我尝试它工作。

就我而言,我使用 getPosition 方法在移动或拖动过程中跟踪 mainWindow 位置。然后使用来自 mainWindow 本身的值对 secondWindow 进行 setPosition

  mainWindow.on('move', function() {
    let position = mainWindow.getPosition();
    secondWindow.setPosition(position[0], position[1]);
  });

关于javascript - 在无框 Electron 窗口中使子窗口与父窗口一起移动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51240864/

相关文章:

javascript - 他们是如何制作今天的谷歌涂鸦的

javascript - 客户端验证显示问题

javascript - 当 ".value = ***"似乎无法识别时,如何使用 JS 填写简单的输入字段?

javascript - Bootstrap Carousel 和我正在构建的主题出现问题

javascript - jQuery 删除两次函数调用

javascript - 使用 Bootstrap 标签输入和 AJAX 时,表单输入的值不会在 ReadyState 上发生变化

html - 在可滚动的 div 内 Canvas 图像

css - 在你的 CSS 选择器中结合类和 ID,最佳实践?

javascript - 如何实现长滚动行为

javascript - Jquery 停止其他 switch case 内 switch case 上的 onchange 函数