javascript - ckeditor drop事件没有被触发

标签 javascript ckeditor

我可以使用基本的 javascript 和 html 触发放置事件:

<div class="drop" style="width: 200px; height: 200px; background: red;"></div>
<a href="#" title="Drag Me">Drag Me</a>

<script>
    $('.drop').on('dragenter',function(e){
        e.preventDefault();
    })
    $('.drop').on('dragover',function(e){
        e.preventDefault();
    })
    $('.drop').on('drop dragdrop',function(){
        console.log("Element was dropped");
    });
</script>

上面的工作非常好。但是,当我在包含 textarea 字段的 ckeditor 对象上放置一个链接时,绝对没有任何反应:

  $(document).ready(function(){
      var ckeditor = CKEDITOR.instances.quickdoc_editor;
      console.log(ckeditor);
      ckeditor.on('dragenter',function(e){
          e.preventDefault();
      })
      ckeditor.on('dragover',function(e){
          e.preventDefault();
      })
      ckeditor.on('drop dragdrop',function(){
          console.log("Element was dropped");
      });
  })

这是控制台输出中的 ckeditor 对象:

a {element: CKEDITOR.dom.element, elementMode: 1, name: "quickdoc_editor", _: Object, commands: Object…}_: ObjectactiveEnterMode: 1activeFilter: CKEDITOR.filteractiveShiftEnterMode: 2addMenuGroup: function (b,a){m[b]=a||100}addMenuItem: function (a,c){m[c.group]&&(l[a]=new CKEDITOR.menuItem(this,a,c))}addMenuItems: function (a){for(var c in a)this.addMenuItem(c,a[c])}blockless: falsecommands: Objectconfig: dcontainer: CKEDITOR.dom.elementcontextMenu: CKEDITOR.plugins.contextMenu.CKEDITOR.tools.createClass.$dataProcessor: CKEDITOR.htmlDataProcessordocument: CKEDITOR.dom.documentelement: CKEDITOR.dom.elementelementMode: 1enterMode: 1filter: CKEDITOR.filterfocusManager: CKEDITOR.focusManagergetClipboardData: function (a,d){function c(a){a.removeListener();a.cancel();d(a.data)}function j(a){a.removeListener();a.cancel();i=!0;d({type:f,dataValue:a.data})}function l(){this.customTitle=a&&a.title}var g=!1,f="auto",i=!1;d||(d=a,a=null);b.on("paste",c,null,null,0);b.on("beforePaste",function(a){a.removeListener();g=true;f=a.data.type},getColorFromDialog: function (c,f){var d=function(a){this.removeListener("ok",d);this.removeListener("cancel",d);a="ok"==a.name?this.getValueOf("picker","selectedColor"):null;c.call(f,a)},e=function(a){a.on("ok",d);a.on("cancel",d)};b.execCommand("colordialog");if(b._.storedDialogs&&getMenuItem: function (a){return l[a]}id: "cke_1"instanceReady: truekeystrokeHandler: CKEDITOR.keystrokeHandlerlang: dlangCode: "en"loaded: truemode: "wysiwyg"name: "quickdoc_editor"plugins: ObjectreadOnly: falseremoveMenuItem: function (a){delete l[a]}resetUndo: function (){b.reset();a.fire("saveSnapshot")}shiftEnterMode: 2status: "ready"tabIndex: 0templates: Objecttitle: "Rich Text Editor, quickdoc_editor"toolbar: Array[15]toolbox: uui: CKEDITOR.uiundoManager: gwindow: CKEDITOR.dom.window__proto__: CKEDITOR.editor.CKEDITOR.editor 

我可能做错了什么?

更新:

我能够让 dragenter 和 dragover 工作。但仍然 drop 和 dragdrop 什么都不做:

  $(document).ready(function(){
      CKEDITOR.on('instanceReady', function (ev) {

          console.log(ev.editor);
          console.log(ev.editor.document);

          ev.editor.document.on('dragenter',function(ev){
              console.log("Yep we get here")
              ev.data.preventDefault(true);
          })

          ev.editor.document.on('dragover',function(ev){
              console.log("Yep we get here too")
              ev.data.preventDefault(true);
          })
          ev.editor.document.on('drop dragdrop',function(){
              console.log("Element was dropped");
          });
      });


  })

最佳答案

终于成功了。 Drop 事件被识别但不是 dragdrop。后者导致两者都没有被解雇。

  $(document).ready(function(){
      CKEDITOR.on('instanceReady', function (ev) {

          ev.editor.document.on('drop',function(){
              console.log("Element was dropped");
          });

          ev.editor.document.on('dragenter',function(ev){
          //    ev.data.preventDefault(true);
          })

          ev.editor.document.on('dragover',function(ev){
          //    ev.data.preventDefault(true);
          })
      });


  })

关于javascript - ckeditor drop事件没有被触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27831030/

相关文章:

ckeditor - 如何在 CKEditor 中为搜索/查找弹出窗口设置 z-index

javascript - 价格范围 slider 的定位

javascript - 可视代码中的 Angular 文件资源管理器 - 添加/修改/包含强调项的索引

javascript - 基金会数据警报框不会关闭

css - CKEDITOR - 防止将图像尺寸添加为 css 样式

php - jQuery UI 上的 CKEditor 内联编辑

javascript - 找不到 JQuery 函数

javascript - 删除 setTimeout 间隔

symfony - EasyAdminBundle : Validation not working on CKEditorType

css - CKEditor 删除内联 CSS