Jak zjistit, zda přetažený obsah je text nebo soubory během události Javascript dragenter

Pomocí taháku událost Zobrazuji na webové stránce dropzone, aby se soubory rychle nahrály, a vše funguje dobře. Dropzone se ale vyskakuje i při přetahování vybraného textu. Jak včas rozpoznat rozdíl?

  1. Vím, že událost drop odhaluje veškerý obsah souboru k iteraci pomocí dataTransfer.files, ale to už je pozdě. Potřebuji to na dragenter, jen já vidím, že pole souborů je vždy prázdné.

  2. Potřebuji plnou kontrolu nad vzhledem a chováním Nehledám existující knihovnu.

  3. Vidím různé hodnoty pro event.dataTransfer.Clipboard.effectAllowed při přetahování textu oproti souborům, ale hodnoty se také liší podle prohlížeče (Chrome vs FF).

  4. MooTools je na místě, pokud to pomůže.

Odpověď

Dobře, udělal jsem dostatečný pokrok, abych začal rozlišovat v Chrome a Firefoxu (3.6+). Pravděpodobně to není spolehlivé, ale pro případ, že by to někomu mohlo být užitečné, zde je kód:

  var isFileTransfer = false;
  if (evt.dataTransfer.types) {
    for (var i=0; i<evt.dataTransfer.types.length; i++) {
      if (evt.dataTransfer.types[i] == "Files") {
        isFileTransfer = true;
        break;
      }
    }
  }