[英]Expand document.getSelection() to entire paragraph
使用IE,此js代码仅在选择的长度为非零时才有效:
document.execCommand("FormatBlock",false,tag);
获取包含节点很简单:
var node = document.getSelection().anchorNode;
但我不太了解如何设置选择内容以包含该节点的所有文本。
对我而言,最大的困惑来源是范围,选择,两者之间的关系以及如何在一个内容可编辑的div(它似乎与输入控件有不同的规则) 的上下文中一起使用它们。 我尝试搜索教程,但“选择”和“范围”是广义术语,我还没有发现任何好的方法。
我在msdn中找到了这个,但是由于对范围和选择的不了解,我看不到如何应用它。 这是该页面上的代码段和预告文字。
当应用于TextRange对象时,select方法使当前对象突出显示。 以下函数使用findText方法将当前对象设置为TextRange对象中的文本。 该函数假定一个元素包含文本字符串“ text here”。
function TextRangeSelect() {
var r = document.body.createTextRange();
r.findText("text here");
r.select();
}
据此,我编写了以下内容,但它导致整个文档被选中。
var sel = document.getSelection();
var r = document.body.createTextRange();
r.findText(sel.anchorNode);
r.select();
这会将选择范围扩展到整个段落。
sel.selectAllChildren(sel.anchorNode.parentNode);
由于您只需要对Internet Explorer执行此操作,因此这是您的全浏览器版本
if (document.getSelection) {
var sel = document.getSelection();
var node = typeof sel.anchorNode.data == "string" ?
sel.anchorNode.parentNode :
sel.anchorNode;
sel.selectAllChildren(node);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.