防止电子应用程序重定向时,拖放项目在窗口

Prevent Electron app from redirecting when drag+dropping items in window

本文关键字:拖放 项目 窗口 重定向 应用程序      更新时间:2023-09-26

我不想在我的应用程序中使用drag+drop功能,因为没有必要。所以我想完全去除窗口的drag+drop特征。到目前为止,当拖动图像时,电子窗口打开图像路径。当拖动链接时,电子窗口将重定向到该链接。

我试过打电话给这个:

  document.addEventListener('dragstart',function(event){
    event.preventDefault();
    return false;
  },true);
  document.addEventListener('drop',function(event){
    event.preventDefault();
    return false;
  },true);

event.preventDefault()drop event应该起作用,但没有

也试过这个:

  BrowserWindow.on('will-navigate',function(event){
    event.preventDefault();
    return false;
  });
  BrowserWindow.webContents.on('will-navigate',function(event){
    event.preventDefault();
    return false;
  });

也失败了。有什么办法解决这个问题吗?

removeEventListener()也失败了

  var listener = function (event) {
    console.log('foo');
  };
  document.removeEventListener('drop',listener,false);

使用ES6语法的简明版本(在Electron 1.4.1下为我工作)

document.addEventListener('dragover', event => event.preventDefault())
document.addEventListener('drop', event => event.preventDefault())

修复了Windows Electron v2.3.1 Windows Electron v0.30.0的问题,代码中应该有dragoverdrop的监听器。

  document.addEventListener('dragover',function(event){
    event.preventDefault();
    return false;
  },false);
  document.addEventListener('drop',function(event){
    event.preventDefault();
    return false;
  },false);

如果你只听dragoverdrop,电子仍然会重定向到被删除的文件。

干杯!

你可以在渲染过程中使用简单的css。

        *, *::after, *::before {
        -webkit-user-select: none;
        -webkit-user-drag: none;
        -webkit-app-region: no-drag;
        cursor: default;
    }