我有一大段文本希望能够选择,通过它的startindex和存储选定的部分endindex。(例如,选择orinword会给我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 标记。