首先我用的是electron+html直接写的,不是vue
1.如何设置小窗口开启时的相对位置,现在是一直默认在中间。
2.目前拖拽窗口使用的是-webkit-app-region:drag,带来的后果很多人都晓得,就是鼠标事件失效了。因为窗口很小,就是一个悬浮按钮所以也没法区分开拖拽区域和非拖拽区域,就是一个整体,这个问题改如何解决。
win.setPosition应该可以达到
好像不管用,
BrowserWindow里有个x和y可以控制
可以参考下:https://www.jianshu.com/p/96327b044e85
测试代码:
index.html
<!DOCTYPE html> <html lang="en" style="height: 100%;"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>拖拽</title> </head> <body style="margin: 0;height: 100%;"></body> <script> const { ipcRenderer } = require('electron'); document.addEventListener('mousedown', mouseDown); document.addEventListener('mouseup', mouseUp); document.addEventListener('mousemove', mouseMove); let isMouseDown = false; let downX = 0; let downY = 0; function mouseDown({ pageX, pageY }) { downX = pageX; downY = pageY; isMouseDown = true; } function mouseUp() { isMouseDown = false; } function mouseMove({ pageX, pageY }) { if (isMouseDown) { let x = pageX - downX; let y = pageY - downY; ipcRenderer.send('mousemove', { x, y }) } } </script> </html>
main.js
const { app, BrowserWindow, ipcMain } = require('electron'); app.on('ready', createWindow); let win; function createWindow() { win = new BrowserWindow({ x: 50, y: 50, height: 100, width: 100, frame: false, webPreferences: { nodeIntegration: true, nodeIntegrationInWorker: true } }); win.loadFile('index.html'); } ipcMain.on('mousemove', (event, pos) => { const [x, y] = win.getPosition(); win.setPosition(x + pos.x, y + pos.y); });