我有一大段文本希望能够选择,通过它的startindex
和存储选定的部分endindex
。(例如,选择or
inword
会给我startindex
1
和 endindex 2
。)
这一切都正常工作,但我遇到了 HTML 实体的问题,例如&
(& 符号)。
我已经创建了一个问题所在的小案例。您可以在下面的小提琴中看到,startIndex
如果您选择 以外的任何内容,则会膨胀&
,因为它不会将&
视为单个字符,而是 5 个字符:&
。
有没有办法让它正确计算像&符号这样的特殊字符,而不会搞砸索引?
JavaScript
$(document).ready(function() {
$('#textBlock').mouseup(function() {
var selectionRange = window.getSelection();
if (!selectionRange.isCollapsed) {
selectedText = selectionRange.getRangeAt(0).toString();
}
document.getElementById('textBlock').setAttribute('contenteditable', true);
document.execCommand('strikethrough', false);
var startIndex = $('#textBlock').html().indexOf('<strike>');
$('#startindex').html('the startindex is: ' + startIndex);
done();
});
});
function done() {
document.getElementById('textBlock').setAttribute('contenteditable', false);
document.getSelection().removeAllRanges();
removeStrikeFromElement($('#textBlock'));
}
function removeStrikeFromElement (element) {
element.find('strike').each(function() {
jQuery(this).replaceWith(removeStrikeFromElement(jQuery(this)));
});
return element.html();
}
我认为/知道这与$('#textBlock').html()
用于indexOf
代替text()
. start
获得和的最佳方式endindex
是<strike>
通过选定的文本,因为execCommand
让我这样做,它是应用程序中从未使用过的 HTML 标记。