• 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;
    }
    
    
    
  • 相关阅读:
    amaze(妹子~) 好像挺好玩
    php 获取图片base64编码格式数据
    一些laravel博文
    微信移动端(wap)开发调试工具
    深入理解控制反转(IoC)和依赖注入(DI)
    使用 composer 下载更新卸载类库
    ionic ui 框架
    laravel 添加 404 页面
    laravel 调试模式及日志配置
    iOS-方法之+ initialize 与 +load
  • 原文地址:https://www.cnblogs.com/wangyongping/p/16410164.html
Copyright © 2020-2023  润新知