编辑上下文菜单中的Div未获取正确的Div元素(CKEditor v.4.6.2)

3

我遇到了一个问题,当我右键单击下面的 HTML 对象并点击“编辑 Div”时,CKEditor 没有抓取正确的 div。例如,当我右键单击“well” div 时,在“编辑 Div”模态窗口中返回“jumbotron”。当我右键单击和编辑“panel”div时,也会收到“container”div。这是已知的问题吗?有没有解决方法?

<div class="container">
<div class="jumbotron">
<h1>Jumbotron</h1>

<p>Sample text here </p>
</div>

<div class="well">this is a well</div>

<div class="panel">this is a panel</div>
</div>
1个回答

2
我认为问题中存在一个小错误,因为单击wellpanel divs时将返回container div。之所以这样是因为您提到的插件(Div Container Manager仅处理带有子段落或子div的div容器。事实上,上下文菜单仅显示用于
容器和 divs。您可能认为它应该适用于panelwell,但如果例如panel div未嵌套在container中,则不会显示用于编辑/删除div的上下文菜单。
编辑器使用此代码获取最外层div:https://github.com/ckeditor/ckeditor-dev/blob/master/plugins/div/plugin.js#L126-L131 请将您的HTML粘贴到编辑器中,打开浏览器控制台,单击panel div并在控制台中执行以下代码。您将注意到返回container div。
var editor = CKEDITOR.instances.editor1; 
var path = editor.elementPath( editor.getSelection().getStartElement() ); editor.elementPath( path.blockLimit ).contains( 
function( node ) {
return node.is( 'div' ) && !node.isReadOnly();
});

总的来说,这个插件的工作原理如下。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接