Days
Hours
Minutes
Seconds
x

New Froala Editor v5.0.0 is here โ€“ Learn More

Skip to content
Froala Documentation

Drag & Drop

Drop Content

Try it yourself:


Edit in JSFiddle

HTML

<div id="drag-smile" style="border: solid 1px #CCC; padding: 5px; width: 300px;" draggable="true"><img src="https://cdnjs.cloudflare.com/ajax/libs/emojione/2.0.1/assets/svg/1f600.svg" width="32"/> Drag Me to insert a smile.</div><br/>
<div id="drag-text" style="border: solid 1px #CCC; padding: 5px; width: 300px;" draggable="true">Drag Me to insert some text.</div><br/>
<div id="froala-editor">
  <h3>Click here to edit the content</h3>
  <p>Drag the image above or the text block to insert them in the editor.</p>
</div>

JAVASCRIPT

<script>
    var dragCallback = function (e) {
      e.dataTransfer.setData('Text', this.id);
    };

    // For Firefox to work.
    document.querySelector('#drag-smile').addEventListener('dragstart', dragCallback);
    document.querySelector('#drag-text').addEventListener('dragstart', dragCallback);

    new FroalaEditor('div#froala-editor', {
      events: {
        initialized: function () {
          var editor = this;

          editor.events.on('drop', function (dropEvent) {
            // Focus at the current posisiton.
            editor.markers.insertAtPoint(dropEvent.originalEvent);
            var $marker = editor.$el.find('.fr-marker');
            $marker.replaceWith(FroalaEditor.MARKERS);
            editor.selection.restore();

            // Save into undo stack the current position.
            if (!editor.undo.canDo()) editor.undo.saveStep();

            // Insert HTML.
            if (dropEvent.originalEvent.dataTransfer.getData('Text') == 'drag-smile') {
              editor.html.insert('<span class="fr-emoticon fr-emoticon-img" style="background: url(https://cdnjs.cloudflare.com/ajax/libs/emojione/2.0.1/assets/svg/1f600.svg)">&nbsp;</span>');
            }
            else {
              editor.html.insert('Hello!');
            }

            // Save into undo stack the changes.
            editor.undo.saveStep();

            // Stop event propagation.
            dropEvent.preventDefault();
            dropEvent.stopPropagation();

            // Firefox show cursor.
            if (editor.core.hasFocus() && editor.browser.mozilla) {
              editor.events.disableBlur();
              setTimeout(function () {
                editor.$el.blur().focus();
                editor.events.enableBlur();
              }, 0);
            }

            return false;
          }, true);
        }
      }
    })
</script>
Sign up

Download the code by signing up for our newsletter

Sign up

Download the code by signing up for our newsletter

Note: By registering, you confirm that you agree to the processing of your personal data by Froala, Inc. - Froala as described in the Privacy Statement. Froala, Inc. - Froala is part of the Idera group and may share your information with its parent company Idera, Inc., and its affiliates. For further details on how your data is used, stored, and shared, please review our Privacy Statement.