恢复插入位置
我试图用四肢修长保存的插入符位置之前,我想强调一些文字。但是,我认为,因为我插入HTML,它有恢复插入符号的问题。这里的代码:恢复插入位置
var saved_selection = rangy.saveSelection();
$("#code").html(code_hl.highlight( $("#code").text(),
-1,
-1));
rangy.restoreSelection(saved_selection);
它一直说标记元素已被删除。它不工作,因为我插入HTML?
我不知道,或者,如果我可以使用插入符号的指数本身设置插入符。还有另一个我写的对象,kb_input,用于跟踪插入符的位置,当前行的偏移量和当前行号。所以,我想知道这是否也有帮助。
如果有人可以帮助我了解在CONTENTEDITABLE标签和范围的一个插入位置之间的关系,这将是足以让我去。
如果使用瘦长1.3(仍在阿尔法,但我的工作就可以了),你可以改用基于索引字符的方法,从而避免了插入标记元素的需要:
// Save the selection by character index
bookmark = rangy.getSelection().getBookmark(editableEl);
// Do stuff that changes the editable content...
// Restore the selection
rangy.getSelection().moveToBookmark(bookmark);
演示:http://rangy.googlecode.com/svn/trunk/demos/bookmark.html
您的问题的答案的一部分是,jQuery.html
删除以前在元素内的所有内容(就像DOM元素的innerHTML
属性)。从the jQuery docs on jQuery.html(htmlString)
片段:
当html的()被用于设置一个元素的内容,即该元素是 任何内容完全是由新的内容替换。 另外,jQuery的去除其它构建体如从与 新内容替换那些元件之前的子元素数据和事件 处理程序。
谢谢你,杰夫 – tay10r 2013-04-10 00:13:18
我写了code_hl对象,只改变了“代码”内部的内容。你是这个意思吗? – tay10r 2013-04-10 00:05:18
我重读了你的问题,并意识到我的[现在删除]评论已关闭。如果你改变'innerHTML'或'innerText/textContent',那么你失去了所有的子节点,我认为这是发生在这里的事情。 – 2013-04-10 00:09:07
还好,至少现在我知道为什么它不工作 – tay10r 2013-04-10 00:11:15