在 window 中拖放项目时防止 Electron 应用程序重定向

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

我不想在我的应用程序中使用 drag+drop 功能,因为不需要它。所以我想完全删除 window 的 drag+drop 功能。到目前为止,当拖动图像时,Electron window 打开图像路径。拖动 links 时,Electron window 重定向到 link.

我试过调用这个:

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

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

event.preventDefault() 应该有效,但没有

也试过this:

  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);

找到 Windows Electron v2.3.1 Windows Electron v0.30.0 的修复程序代码应该有 dragover 和 [=13= 的监听器].

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

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

如果您只听 dragoverdrop.

,Electron 仍会重定向到拖放的文件

干杯!

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

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

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

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