-webkit-app-region: drag导致其全部子控件鼠标事件失效

项目场景:

项目场景:学习electron vue3 ts element项目中遇到的问题


问题描述

vue组件无法触发鼠标事件

<script setup lang="ts">
// import { ipcRenderer } from 'electron';
const ShutOrMin=(v:String)=>{
window.api.ShutOrMin(v)
}
</script>
<template>
        <el-button type="primary" color="#715CFE" id="Shut" @Click="ShutOrMin('m')" ></el-button>
        <el-button type="primary" color="#F9D382" id="Shut" @Click="ShutOrMin('s')" ></el-button>
</template>
<style>
#Shut{
position: relative;
top: 674px;
}
</style>

原因分析:

纠结了一晚上才知道的答案…
vue组件与一个div盒子重叠,div盒子设置了 -webkit-app-region: drag 窗口可拖动,导致其所有子控件的鼠标事件失效


解决方案:

使用element-plus的组件可以解决问题,或者在div盒子里面再创建一个div盒子,让它附着在vue控件上面,然后设置其-webkit-app-region:no-drag就可以了,还有一种可能导致事件失效就是组件被覆盖在别的组件下面,解决方法:子组件定位设置为posiaction:absolute,父组件设置为posiction:relative

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
可以在需要拖动的元素上添加 `draggable="true"` 属性,并在主进程中监听 `dragstart` 和 `drop` 事件。具体步骤如下: 1. 在需要拖动的元素上添加 `draggable="true"` 属性,例如: ```html <div draggable="true">拖动我</div> ``` 2. 在主进程中,监听 `dragstart` 事件,并设置传输数据和拖动效果,例如: ```javascript const { ipcMain } = require('electron'); ipcMain.on('dragstart', (event, data) => { event.sender.startDrag({ files: [data.file], // 设置传输的数据,例如文件路径 icon: data.icon // 设置拖动的图标 }); }); ``` 3. 在主进程中,监听 `drop` 事件,并处理传输的数据,例如: ```javascript const { ipcMain } = require('electron'); ipcMain.on('drop', (event, data) => { console.log(data.files); // 处理传输的数据,例如获取文件路径 }); ``` 4. 在渲染进程中,监听 `dragstart` 事件,并在事件处理函数中向主进程发送数据,例如: ```javascript const { ipcRenderer } = require('electron'); document.addEventListener('dragstart', (event) => { ipcRenderer.send('dragstart', { file: '/path/to/file', icon: '/path/to/icon.png' }); }); ``` 5. 在渲染进程中,监听 `drop` 事件,并在事件处理函数中处理传输的数据,例如: ```javascript const { ipcRenderer } = require('electron'); document.addEventListener('drop', (event) => { event.preventDefault(); // 阻止默认行为 ipcRenderer.send('drop', { files: event.dataTransfer.files }); }); ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值