file-drop-behavior.html 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. <script>
  2. 'use strict';
  3. Chat = window.Chat || {};
  4. Chat.FileDropBehavior = {
  5. attached: function() {
  6. var dropZone = this;
  7. // Optional. Show the copy icon when dragging over. Seems to only work for chrome.
  8. dropZone.addEventListener('dragover', function(e) {
  9. e.stopPropagation();
  10. e.preventDefault();
  11. e.dataTransfer.dropEffect = 'copy';
  12. this.style.transform = 'scale(1.2)';
  13. });
  14. // Get file data on drop
  15. dropZone.addEventListener('drop', function(e) {
  16. e.stopPropagation();
  17. e.preventDefault();
  18. var files = e.dataTransfer.files; // Array of all files
  19. for (var i = 0; i < files.length; i++) {
  20. var file = files[i];
  21. var reader = new FileReader();
  22. reader.onload = function(e2) {
  23. // finished reading file data.
  24. console.log('file dropped');
  25. this.fire('file-uploaded', {
  26. url: e2.target.result,
  27. name: file.name
  28. });
  29. }.bind(this);
  30. reader.readAsDataURL(file); // start reading the file data.
  31. }
  32. });
  33. }
  34. }
  35. </script>