这是我的问题:
当用户在WYSWYG编辑器小部件的文章或编辑区域中进行选择时, 选择可以跨越多个元素, 像锚点,图像,跨度标签......甚至是块级元素(但在我的问题中没有表格)。
我知道如何从选择中检索Range对象,
但找不到可靠的解决方案来获取Range
对象的内容文本。
我不是在寻找IE的解决方案(其TextRange对象具有.text
属性)。
谢谢!
答案 0 :(得分:4)
您是否看过关于Range的quirksmode文章?
根据这篇文章,您可以创建一个这样的方法:
function getRangeText() {
var userSelection;
if (window.getSelection) {
userSelection = window.getSelection();
} else if (document.selection) {
userSelection = document.selection.createRange();
}
var selectedText = userSelection;
if (userSelection.text) {
selectedText = userSelection.text;
}
return selectedText;
}
我在FF5,Opera 11,Mac上的Safari以及IE6和IE7上进行了测试。它值得在其他IE浏览器中进行测试,但我的猜测也适用于它们。
答案 1 :(得分:2)
这将返回一个字符串,适用于所有主流浏览器:
function getSelectionText() {
var text = ""
if (window.getSelection) {
text = window.getSelection().toString();
} else if (document.selection && document.selection.type == "Text") {
text = document.selection.createRange().text;
}
return text;
}