在ckeditor中选择地物元素-捕获单击地物元素(或任何子项)
我正在寻找一种方法来捕获和选择图形元素(或其任何子元素) 理想情况下,我希望这样可以绕过IMG的选择(包括IMG上的objectResizing),当它们位于地物标记中时 我已经尝试过使用currentInstance事件捕获事件。不确定这是不是最好的方法,或者是否有其他事件。显然,我需要某种类型的事件冒泡来知道事件目标(即img)是否在figure元素中 我知道如何在javascript/jquery中实现这一点,但我正在寻找合适的ckeditor方法,因为这是在ckeditor中使用img和表实现的 我找到了一个可能的解决方案,它使我能够选择figure元素,无论是单击它的子元素还是图形本身。但是,双击会触发与子级关联的其他事件,因此在本例中,我需要找到一种方法来取消这些其他事件在ckeditor中选择地物元素-捕获单击地物元素(或任何子项),ckeditor,Ckeditor,我正在寻找一种方法来捕获和选择图形元素(或其任何子元素) 理想情况下,我希望这样可以绕过IMG的选择(包括IMG上的objectResizing),当它们位于地物标记中时 我已经尝试过使用currentInstance事件捕获事件。不确定这是不是最好的方法,或者是否有其他事件。显然,我需要某种类型的事件冒泡来知道事件目标(即img)是否在figure元素中 我知道如何在javascript/jquery中实现这一点,但我正在寻找合适的ckeditor方法,因为这是在ckeditor中使用img和
editor.on( 'selectionChange', function( evt )
{
if ( editor.readOnly )
return;
/*
* only select our figure elements
*/
var element = evt.data.path.lastElement && evt.data.path.lastElement.getAscendant( 'figure', true );
if ( element && element.getName() == 'figure' && element.getAttribute( 'data-media-id' ) && element.getChildCount() ) {
editor.getSelection().selectElement(element);
}
});
editor.on( 'doubleclick', function( evt )
{
var element = evt.data.element.getAscendant( 'figure', true );
if ( !element.isReadOnly() )
{
if ( element.is( 'figure' ) || element.getParent().is( 'figure' ) )
{
editor.getSelection().selectElement( element );
editor.execCommand('imagemanager', element);
}
}
});
事实证明,我只需要假装打开一个对话框。双击的问题是我没有使用ckeditor的对话框(因为我正在打开一个ajax窗口并自己构建它)。因此,这会阻止其他窗口打开
editor.on( 'doubleclick', function( evt )
{
var element = evt.data.element.getAscendant( 'figure', true );
if ( !element.isReadOnly() )
{
if ( element.is( 'figure' ) || element.getParent().is( 'figure' ) )
{
editor.getSelection().selectElement( element );
editor.execCommand('imagemanager', element);
// :HACK: pretend to open a dialog, cancels other dialogs from opening
evt.data.dialog = '';
}
}
});