当用户点击我的页面构建器中的contenteditable元素时,我会触发一个初始化Shared CKEditor
实例的点击事件。
问题是我丢失了插入位置,CKEditor将此光标放在文本的开头?
我想将插入符号位置恢复到用户在初始化之前单击的相同位置。这主要是在文本的中间。
要实现这一目标,我需要两个步骤:
我找到了这段代码(来自here):
editor.focus();
var selection = editor.getSelection();
var range = selection.getRanges()[0];
var pCon = range.startContainer.getAscendant({p:2},true); //getAscendant('p',true);
var newRange = new CKEDITOR.dom.range(range.document);
newRange.moveToPosition(pCon, CKEDITOR.POSITION_BEFORE_START);
newRange.select();
但这仅在编辑器已经实例化时才有效。在我的情况下,我没有编辑就开始了。
有什么方法可以完成这项工作吗?
答案 0 :(得分:0)
您是否只想初始化编辑器,以便光标位置是他们点击开始编辑的位置?
在启动编辑器之前,您可以使用选择范围并在原始HTML中插入占位符。
启动编辑器后,在编辑器内容中找到占位符,将其删除,然后将插入符号放在那里。占位符可以像<span class="caret-placeholder"></span>
一样简单。
答案 1 :(得分:0)
使用jQuery,您可以使用:
获取光标位置$('#element').prop("selectionStart");
原生JS将是:
document.getElementById('#element').selectionStart;
(如果您必须支持IE8及以下版本,则需要其他代码。)
在您的点击事件中,您需要获取CKEditor实例:
CKEDITOR.instances
然后你应该能够使用你的代码来设置光标位置。