web-dev-qa-db-ja.com

ウィンドウ内のアイテムをドラッグ+ドロップするときに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);
_

_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);
_
17
Jo E.

の修正が見つかりました Windows Electron v2.3.1Windows 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);

dragoverまたはdropのみをリッスンしている場合でも、Electronはドロップされたファイルにリダイレクトします。

乾杯!

11
Jo E.

ES6構文を使用した簡潔なバージョン(Electron 1.4.1で動作します)

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