Tauri2.x拖拽事件
使用前端监听拖拽事件时,发现事件无法触发
Tauri 配置
[code]{
"app": {
"windows": [
{
"label": "main",
"title": "wngtools",
"width": 800,
"height": 600,
"resizable": true,
"fullscreen": false,
"dragDropEnabled": true //这个默认是true
//Whether the drag and drop is enabled or not on the webview. By default it is enabled.
//Disabling it is required to use HTML5 drag and drop on the frontend on Windows.
}
],
...
},
...
}[/code]
Tauri 的安全策略阻止了拖拽事件。默认情况下,前端事件被 Tauri 拦截,走它自己的事件
比如说tauri://drag-drop,tauri://drag-leave,tauri://drag-enter等。
那么方案就有两个,一个是声明"dragDropEnabled": false,这样前端的拖拽事件就能正常工作了。
但既然Tauri以权限控制与安全为主,我选择了第二个方案,使用 Tauri 提供的拖拽事件。
所以要把原有的拖拽事件改成 Tauri 的事件。



[code]import { listen } from "@tauri-apps/api/event";
listen("tauri://drag-drop", (e) => {
console.log("Dropped files:", e);
});
listen("tauri://drag-leave", () => {
console.log("Drag leave");
});
listen("tauri://drag-enter", () => {
console.log("Drag enter");
});[/code]
当然,根据官方文档,Tauri:// 事件并不能监听到具体的 DOM 对象(当然,如果你喜欢用相对坐标来判断那我没话说),所以如果你需要监听具体的 DOM 对象的拖拽事件,
还是需要把dragDropEnabled设置为false,并且使用原生的DOM拖拽事件才能行。



1
2
3
4
5