• electron vue 透明桌面事件穿透


    electron 透明桌面事件穿透

    网上有很多方式都不怎么理想,这里有个新方式

    我这里用到了remote  ,引用的包是  @electron/remote

    在主流程main.js下引用
    
    import { screen } from 'electron'
    
    ipcMain.handle('get-screen-point', () => screen.getCursorScreenPoint());
    在渲染流程中,这里是vue
    
    import { ipcRenderer } from 'electron'
    import { BrowserWindow } from '@electron/remote'
    const win = BrowserWindow.getFocusedWindow()
    
    let t = null
    
      mounted () {
        window.addEventListener('mousemove', event => {
          this.handleMouseMov(event, this)
        });
      },
      methods: {
        getScreenPoint: () => {
          return ipcRenderer.invoke('get-screen-point')
        },
    
        handleMouseMov: (e, _this) => {
          console.log(e, document)
          if (e.target === document.documentElement) {
            win.setIgnoreMouseEvents(true);
    
            if (t) clearInterval(t);
            t = setInterval(async () => {
              _this.getScreenPoint().then(point => {
                const elem = document.elementFromPoint(
                  Math.floor(point.x),
                  Math.floor(point.y)
                );
    
                if (elem !== document.documentElement) {
                  win.setIgnoreMouseEvents(false);
                  clearInterval(t);
                }
              })
            }, 150);
          }
          else {
            win.setIgnoreMouseEvents(false);
          }
        }
      },
    在样式中
    
    body,html{
      pointer-events: none
    }
    
    // 不穿透层
    #noPo{
      pointer-events: auto;
    }
    
    
    
  • 相关阅读:
    6.一个python-selenium的实战
    9.python-ini文件使用(读和写)
    4.表数据的操作-insert、delete
    5.数据库的查询-select
    2.自动化测试之python+selenium基础
    6.python中目录的操作
    sql如何先排序再去重
    hbase(0.94) get、scan源码分析
    Antlr 在 idea 中正确使用的方式
    某日看代码对代码可读性的思考
  • 原文地址:https://www.cnblogs.com/wangyongping/p/16410164.html
Copyright © 2020-2023  润新知