Javascript:如何获取所选文本范围之外的文本
Javascript: how can I get text outiside of selected text range
我知道如何通过以下方式从选定范围内获取文本:
if (elem.getSelection) {
sel = elem.getSelection();
if (sel.rangeCount) {
selectedText=sel.getRangeAt(0);
}
} else if (elem.selection) {
selectedText=elem.selection.createRange();
}
问题 - 如何在选定范围之前和之后获取文本?提前谢谢。
这里有
一个函数,可以在大多数浏览器中使用 DOM Range
,在 IE <9 中使用 TextRange
。
现场演示:http://jsfiddle.net/bVpqR/
法典:
function getUnselectedText(containerEl) {
var sel, range, tempRange, before = "", after = "";
if (typeof window.getSelection != "undefined") {
sel = window.getSelection();
if (sel.rangeCount) {
range = sel.getRangeAt(0);
} else {
range = document.createRange();
range.collapse(true);
}
tempRange = document.createRange();
tempRange.selectNodeContents(containerEl);
tempRange.setEnd(range.startContainer, range.startOffset);
before = tempRange.toString();
tempRange.selectNodeContents(containerEl);
tempRange.setStart(range.endContainer, range.endOffset);
after = tempRange.toString();
tempRange.detach();
} else if ( (sel = document.selection) && sel.type != "Control") {
range = sel.createRange();
tempRange = document.body.createTextRange();
tempRange.moveToElementText(containerEl);
tempRange.setEndPoint("EndToStart", range);
before = tempRange.text;
tempRange.moveToElementText(containerEl);
tempRange.setEndPoint("StartToEnd", range);
after = tempRange.text;
}
return {
before: before,
after: after
};
}
我不确定为什么你会想知道选择之前的字符串和随后的字符串。基本上,这两个字符串一起将是您的整个页面减去您的选择。
以下是对范围的很好的介绍:http://www.quirksmode.org/dom/range_intro.html
从我的头顶上,您应该添加验证,以防所选文本位于两侧:假设 elem 是一个文本框:
if (elem.getSelection) {
sel = elem.getSelection();
if (sel.rangeCount) {
selectedText=sel.getRangeAt(0);
}
} else if (elem.selection) {
selectedText=elem.selection.createRange();
}
var texts = elem.value.split(selectedText);
var before = texts[0];
var after = texts[2];
或
var text = element.value;
var before = text.substring(0,text.indexOf(selectedText));
var after = text.replace(before + selectedtext,''); // or after = text.substring(before.length + selectedText.length);
相关文章:
- Angular JS-文本框未在独立范围内更新
- 如何在JavaScript中获取文本区域的选定文本范围
- 对象内部函数内的对象文本的范围
- 如何按从当前单词到段落中该句子(.)结尾的范围选择文本
- 如何在 Chrome 的文本区域中“替换”选定的文本范围
- 根据输入范围更新显示的文本量
- 返回Javascript中给定正则表达式的文本范围数组
- 根据输入范围更新显示的文本量
- 如何使用javascript将文本框中的值限制为1-999之间的值范围
- 使用jQuery获取h4 class=“”的文本内容;ng结合”;超出Angular范围
- 如何允许用户在文本框中插入角度范围变量
- WKHTMLTOPDF - 添加一个侧边栏,该侧边栏跟随不同的文本范围
- 目标C - UIWebview - 将javascript文本范围转换为目标c对象,反之亦然
- 如何删除所选文本范围中的类属性
- Javascript:如何获取所选文本范围之外的文本
- 具有重叠文本范围的解决方案
- 文本范围选择空设计不能在ie7,8中工作
- 在Javascript中,我需要一个RegEx来删除具有多个外观的两个文本(范围)之间的字符串中的文本
- OfficeJs/WordJs通过索引和绑定单击事件选择文本范围
- 未在 Web 浏览器控件中选择/突出显示文本范围