使用IE,此js代码仅在选择具有非零长度时起作用:
document.execCommand("FormatBlock",false,tag);
获取包含节点非常简单:
var node = document.getSelection().anchorNode;
但我真的不明白如何将选择设置为包含此节点的所有文本。
对我来说,最大的混淆来源是范围,选择,两者之间的关系以及如何在一个可信的div 的上下文中使用它们,这似乎与输入控件有不同的规则。我试着寻找一个教程但是"选择" "范围"是广义的,我还没有找到任何好的东西。
我找到了this in msdn,但由于我对范围和选择的不理解,我无法看到如何应用它。这是该页面的代码段和前言文本。
当应用于TextRange对象时,select方法会导致 要突出显示的当前对象。以下功能使用 findText方法将当前对象设置为TextRange中的文本 宾语。该函数假定包含文本字符串的元素 "在这里发短信"。
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();
答案 0 :(得分:1)
这会将选择范围扩展到整个段落。
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);
}