【发布时间】:2015-04-27 22:06:49
【问题描述】:
我有一个内容可编辑的 div,我想将范围移动到当前字符之后的一个字符。
我目前想检查插入符号后的字符是否是某个字符,如果是,则在其后放置插入符号
我使用这个代码,但它不起作用
placeCaretAfterHiddenCharacter:function(containerEl,afterCharacters) {
var afterChar = "", sel, range, afterRange,rangeHtml;
sel = rangy.getSelection();
if (sel.rangeCount > 0) {
range = sel.getRangeAt(0).cloneRange();
var endRange = rangy.createRange();
endRange.selectNodeContents(containerEl);
endRange.collapse(false);
range.setEnd(containerEl, endRange.endOffset);
var div = this.cloneSelectionInDiv(range);
//to get string as html as range removes the html and returns the text only
rangeHtml = div.innerHTML;
afterChar = rangeHtml.slice(afterCharacters-1);
if(/[\u200B\u200C\u200D\uFEFF\u2028\u2029]/g.test(afterChar)) {
range.setStartAfter(range.startContainer,range.startOffset);
range.collapse(true);
sel.addRange(range);
}
}
},
afterChar 设置正确,但插入符号没有移动。
如何做到这一点?
【问题讨论】:
标签: javascript range selection contenteditable rangy