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

时间:2015-07-28 08:13:19

标签: javascript electron

我不想在我的应用中使用drag+drop功能,因为不需要它。所以我想完全删除窗口的drag+drop功能。到目前为止拖动图像时,Electron窗口打开图像路径。拖动链接时,Electron窗口会重定向到链接。

我试过这样说:

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

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

drop event应该有效,但它没有

还尝试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);

3 个答案:

答案 0 :(得分:13)

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

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

答案 1 :(得分:11)

找到 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,Electron仍会重定向到已删除的文件。

干杯!

答案 2 :(得分:0)

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

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