我正在試圖製作一個CKEditor小部件,用於收聽dragstart
drag
和dragend
事件。問題在於這些事件永遠不會被解僱 - 就像.cke_widget_wrapper
(包裹小部件的div)取消這些事件。CKEditor 4 Widget with Draggable contents
請注意,我並不是試圖讓整個小部件可拖動(小部件功能的一部分),而是使小部件內的元素可拖動。
如果我打開.cke_widget_wrapper
的孩子(從而刪除包裝),那麼一切都按預期工作。但看起來這個包裝阻止了孩子的拖拽。
我不會發布關於如何進行拖動的代碼,因爲它在單獨的測試用例中按預期方式工作,並且如同解釋的那樣,當我從.cke_widget_wrapper
中解開窗口小部件時,該工作方式起作用。
下面是我如何創建一個構件:
CKEDITOR.plugins.add('embed', {
init: function(editor) {
editor.widgets.add('gallery', {
init: function() {
// code here that generates the HTML
},
upcast: function(element) {
// Defines which elements will become widgets.
if (element.hasClass('gallery')) {
return true;
}
},
downcast: function(element) {
element.setHtml("");
},
draggable: false, // This does not make a difference, but I set it to false because I don't want to use the built in widget dragging functionality
template: "<div class="gallery" trix-id='{id}'></div>",
defaults: function() {
return {id: 1} // As an example
}
});
}
});
這裏是生成的HTML:
<div tabindex="-1" contenteditable="false" data-cke-widget-wrapper="1" data-cke-filter="off" class="cke_widget_wrapper cke_widget_block cke_widget_selected" data-cke-display-name="gallery" data-cke-widget-id="0">
<div class="gallery cke_widget_element" trix-id="1" data-cke-widget-upcasted="1" data-cke-widget-keep-attr="0" data-widget="gallery">
<!-- Other HTML -->
<div class="resize" draggable="true" trix-gallery-resize="1"></div>
</div>
</div>
的div.resize
元素具有連接到它允許拖動事件處理程序。如前所述,這個工作在一個孤立的測試案例中,當我刪除.cke_widget_wrapper
包裝。
有誰知道我如何允許在窗口小部件中拖動,以便事件處理程序在.resize
元素上正常運行?
感謝
我有一個插件可以附加html5視頻標籤,我怎樣才能在這裏獲得您的體驗優勢。 –