edd*_*ddy 5 javascript electron
我怎样才能制作一个电子BrowserWindow,鼠标事件可以完全传递到下面的任何东西?
窗口只是用来展示东西的。当ctrl按下 时,窗口应变为启用状态。
小智 10
点击窗口
要创建点击窗口,即使窗口忽略所有鼠标事件,可以调用
win.setIgnoreMouseEvents(ignore)API:Run Code Online (Sandbox Code Playgroud)const {BrowserWindow} = require('electron') let win = new BrowserWindow() win.setIgnoreMouseEvents(true)- https:// Electronjs.org/docs/api/frameless-window#click-through-window
我已将示例扩展为下面的完整电子应用程序。
您可能需要考虑以下一些事项:
x和y坐标transparent: true要使窗口“点击通过”,您还需要:
frame: falsefocusable: false,这隐式设置skipTaskbar:true我还没有在电子中找到将窗口发送到后台的方法,因此如果其下方有一个窗口,则新窗口将位于顶部,直到您聚焦窗口为止。将窗口聚焦后,点击窗口将永远无法获得焦点,因此:
无论如何,此类应用程序可能会在登录时启动,因此在大多数情况下这不应该成为问题。
我认为这目前不可能,因为当窗口未聚焦时需要全局监听键盘事件。
./main.js
const {BrowserWindow} = require('electron')
let win = new BrowserWindow()
win.setIgnoreMouseEvents(true)
Run Code Online (Sandbox Code Playgroud)
./index.html
const { BrowserWindow, app } = require('electron')
let mainWindow = null
function main() {
mainWindow = new BrowserWindow({
x: 0, y: 0,
transparent: true,
focusable: false,
frame: false
})
mainWindow.setIgnoreMouseEvents(true)
mainWindow.loadFile(`./index.html`)
mainWindow.on('close', event => {
mainWindow = null
})
}
app.on('ready', main)
Run Code Online (Sandbox Code Playgroud)
./package.json
<h1 style="color: #FFF">Hello World!</h1>
Run Code Online (Sandbox Code Playgroud)
安装:
> npm install
Run Code Online (Sandbox Code Playgroud)
运行:
> npm start
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5699 次 |
| 最近记录: |