在我突出显示一些文字之前,我正试图使用rangy来保存插入位置。但是,我认为,因为我正在插入html,它在恢复插入符时遇到了问题。这是代码:
var saved_selection = rangy.saveSelection( );
$( "#code" ).html( code_hl.highlight( $( "#code" ).text( ),
-1,
-1 ) );
rangy.restoreSelection( saved_selection );
它一直说已经删除了标记元素。是不行,因为我正在插入HTML?
我想知道,或者,如果我可以通过使用插入符号的索引来设置插入符号。我写的另一个对象kb_input跟踪插入位置,当前行的偏移量和当前行号。所以,我想知道这是否也有帮助。 德尔>
如果有人可以帮助我理解满足标签中的插入位置与范围之间的关系,那就足以让我继续前进。
答案 0 :(得分:3)
如果您使用Rangy 1.3(仍在使用alpha,但我正在使用它),您可以使用基于字符索引的方法,这样就无需插入标记元素:
// 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
答案 1 :(得分:1)
您问题的答案的一部分是jQuery.html
删除以前在元素中的所有内容(就像DOM元素的innerHTML
属性一样)。来自the jQuery docs on jQuery.html(htmlString)
的代码段:
当.html()用于设置元素的内容时,任何内容都是 在该元素中完全被新内容所取代。 此外,jQuery删除了其他构造,如数据和事件 在用这些元素替换之前,来自子元素的处理程序 新内容。