是否可以在文本框外检索所选文本? 我见过从输入表单和textareas获取文本的解决方案,类似于: http://laboratorium.0xab.cd/jquery/fieldselection/0.2.3-test/test.html 但这可以在HTML文本(div元素内)中使用吗?
例如,我希望用户能够加粗选择不在textarea中的文本。
答案 0 :(得分:4)
是的,这是可能的。 IE和其他浏览器具有相当不同的机制来处理选择。如果您只想要所选文本,则以下内容将执行此操作:
function getSelectedText() {
var text = "";
if (window.getSelection) {
text = "" + window.getSelection();
} else if (document.selection && document.selection.createRange &&
document.selection.type == "Text") {
text = document.selection.createRange().text;
}
return text;
}
要解决您的具体问题,您可以使用document.execCommand("bold", null, false);
将当前选择设为粗体。在非IE浏览器中,您必须首先暂时将文档置于编辑模式:
function toggleSelectionBold() {
var range, sel;
if (window.getSelection) {
// Non-IE case
sel = window.getSelection();
if (sel.getRangeAt) {
range = sel.getRangeAt(0);
}
document.designMode = "on";
if (range) {
sel.removeAllRanges();
sel.addRange(range);
}
document.execCommand("bold", null, false);
document.designMode = "off";
} else if (document.selection && document.selection.createRange &&
document.selection.type != "None") {
// IE case
range = document.selection.createRange();
range.execCommand("bold", null, false);
}
}
答案 1 :(得分:1)
要在文档的任何部分中获取所选文本,您可以使用window.getSelection
,document.getSelection
或document.selection
。如果要实现交叉兼容性,则应尝试以上各项,例如:
if (window.getSelection) {
window.getSelection();
} else if (document.getSelection) {
document.getSelection();
} else if (document.selection) {
document.selection.createRange().text;
}