是否可以在网站的某个段落中显示突出显示的文本,例如通过使用jQuery?获取突出显示/选定文本
回答
获取用户选择的文本相对简单。涉及jQuery没有任何好处,因为除了window
和document
对象之外您什么也不需要。
function getSelectionText() {
var text = "";
if (window.getSelection) {
text = window.getSelection().toString();
} else if (document.selection && document.selection.type != "Control") {
text = document.selection.createRange().text;
}
return text;
}
如果你有兴趣,也将应对<textarea>
选择和textY处<input>
元素的实现,你可以使用以下。由于现在是2016年,我省略了IE < = 8支持所需的代码,但我已经在SO上的许多地方发布了相关内容。
function getSelectionText() {
var text = "";
var activeEl = document.activeElement;
var activeElTagName = activeEl ? activeEl.tagName.toLowerCase() : null;
if (
(activeElTagName == "textarea") || (activeElTagName == "input" &&
/^(?:text|search|password|tel|url)$/i.test(activeEl.type)) &&
(typeof activeEl.selectionStart == "number")
) {
text = activeEl.value.slice(activeEl.selectionStart, activeEl.selectionEnd);
} else if (window.getSelection) {
text = window.getSelection().toString();
}
return text;
}
document.onmouseup = document.onkeyup = document.onselectionchange = function() {
document.getElementById("sel").value = getSelectionText();
};
Selection:
<br>
<textarea id="sel" rows="3" cols="50"></textarea>
<p>Please select some text.</p>
<input value="Some text in a text input">
<br>
<input type="search" value="Some text in a search input">
<br>
<input type="tel" value="4872349749823">
<br>
<textarea>Some text in a textarea</textarea>
如果{} -fork有什么好处呢?什么是“控制”? – Dan 2011-03-27 10:30:08
@丹:对不起,我错过了这个问题(不要以为是让我知道)。第二个分支用于IE <= 8(IE 9实现'window.getSelection()')。 'document.selection.type'检查是测试选择是文本选择而不是控制选择。在IE中,控件选择是在包含一个或多个元素(如图像和表单控件)的可编辑元素中进行的选择,包含轮廓和调整大小手柄。如果你在这样的选择上调用'.createRange()',你会得到一个'ControlRange'而不是'TextRange',而'ControlRange's没有'text'属性。 – 2011-03-30 15:30:58
任何事件发生后都可以调用此函数吗?它似乎并不适用于我在textarea – 2014-06-03 12:28:50
此解决方案,如果您使用Chrome(无法验证其他浏览器),如果文本位于同一DOM元素:
window.getSelection().anchorNode.textContent.substring(
window.getSelection().extentOffset,
window.getSelection().anchorOffset)
获取用这种方式突出显示的文字:
window.getSelection().toString()
当然还有一个specia对于即l疗程:
document.selection.createRange().htmlText
对于IE> = 10“document.selection”_support已在IE10中删除,并替换为__“window.getSelection”。来源:https://connect.microsoft.com/IE/feedback/details/795325/window-getselection-and-document-selection-legacy-support – user2314737 2017-05-19 09:14:11
这将在各种浏览器(例如Firefox)的多个条件下失败。 – Makyen 2017-08-12 07:33:01
- 1. 获取突出显示的文本
- 2. 突出显示选定的文本并同时获得发生
- 3. 如何使用angularjs捕获突出显示/选定的文本?
- 4. 文本选择突出显示太多
- 5. 显示UIMenuController时获取选定文本
- 6. CSS文本突出显示
- 7. 突出显示文本
- 8. 突出显示文本,住
- 9. EditText突出显示文本
- 10. 取消选中/突出显示文本时触发事件
- 11. 突出显示选定的选项卡
- 12. OS X获取突出显示的文本
- 13. 从活动窗口中获取突出显示的文本
- 14. 从任何窗口获取突出显示的文本(javascript)
- 15. jQuery从突出显示的文本中获取类名
- 16. 获取突出显示的文本 - 并导航到URL
- 17. 如何在UITableViewCell中获取UITextView的突出显示的文本?
- 18. 获取objective-c中的突出显示的文本
- 19. 如何使用Javascript或jQuery获取突出显示的文本?
- 20. Jquery突出显示的文本的选定值
- 21. 突出显示不同颜色的选定文本视图
- 22. 自定义文本框:突出显示和选择
- 23. 如何突出显示excel中的选定文本
- 24. 如何在android中突出显示选定的文本?
- 25. 当您选择“获取”,“返回”和“结束获取”突出显示时,突出显示的名称是什么?
- 26. 获取选中/突出显示的文本html在gmail撰写邮件区域
- 27. Algolia - 格式突出显示的文本只显示突出显示的部分
- 28. 突出显示文本 - 本机Javascript
- 29. Android - 突出显示文本和副本
- 30. 如何突出显示用户在已经突出显示的文本内选择的文本?
这里是一个有效的解决方案http://dipaksblogonline.blogspot.in/2014/11/javascript-text-selection-popover.html – Dipak 2014-11-28 18:30:15
简单的JavaScript为我工作。 document.getSelection()。focusOffset-document.getSelection()。anchorOffset) – 2017-06-27 10:15:19
@RohitVerma:这只是在简单的情况下工作包含在单个文本节点中的选择,这绝不是保证是这种情况。 – 2017-11-09 10:17:38