Jquery .replace()
无法使用长文本。
如果你突出显示几个单词一切正常,但如果选择所有文字都不起作用。
//Grab selected text
function getSelectedText(){
if(window.getSelection){
return window.getSelection().toString();
}
else if(document.getSelection){
return document.getSelection();
}
else if(document.selection){
return document.selection.createRange().text;
}
}
$("p").on("mouseup",function() {
selection = getSelectedText();
});
$(".add-h1").on("click",function(e) {
e.preventDefault();
alert(selection);
if(selection.length >= 1) {
var repl = '</p><h1>' + selection + '</h1><p>';
$('body').html($('body').html().replace(selection, repl));
selection = "";
}
});
答案 0 :(得分:3)
长度不是问题,而是选择返回的文本与html
返回的源中的文本之间的间距不一致。例如,在您的原始HTML中,您有:
fallback to users JavaScript disabled
请注意JavaScript
之前有2个空格。但是,在您选择的返回文本中,这些空格将标准化为单个空格。
您可能会遇到与其他任何空格,行返回等类似的问题,当然还有任何嵌入式html标记。文本选择返回看到的文本,而不是源标记中的文本。