JavaScript Set Window选择

时间:2011-05-31 15:46:38

标签: javascript jquery window selection clear

在JavaScript中,有一个方法window.getSelection(),可以让我获取用户所做的当前选择。

是否有相应的功能,例如window.setSelection(),可让我设置或清除当前选择?

4 个答案:

答案 0 :(得分:16)

清除所有主流浏览器中的选择:

function clearSelection() {
    if (window.getSelection) {
        window.getSelection().removeAllRanges();
    } else if (document.selection) {
        document.selection.empty();
    }
}

选择内容需要在大多数浏览器中使用DOM RangeSelection个对象,并在IE中使用TextRange个对象。 9.这是一个简单的跨浏览器示例,用于选择特定元素的内容:

function selectElement(element) {
    if (window.getSelection) {
        var sel = window.getSelection();
        sel.removeAllRanges();
        var range = document.createRange();
        range.selectNodeContents(element);
        sel.addRange(range);
    } else if (document.selection) {
        var textRange = document.body.createTextRange();
        textRange.moveToElementText(element);
        textRange.select();
    }
}

答案 1 :(得分:7)

也许会这样做:

window.selection.clear();

Crossbrowser版本:

if (window.getSelection) {
   if (window.getSelection().empty) {  // Chrome
     window.getSelection().empty();
   } else if (window.getSelection().removeAllRanges) {  // Firefox
     window.getSelection().removeAllRanges();
   }
} else if (document.selection) {  // IE?
  document.selection.empty();
}

答案 2 :(得分:0)

在支持“选择”和“范围”内容的浏览器中,您需要创建一个范围对象,然后设置其开始/结束。 “范围”对象的Mozilla documentation有很多信息。

Chrome不支持此功能,至少不支持该API,我敢打赌Safari也不支持。

编辑 - 感谢@Tim Down注意到WebKit(Chrome& Safari)确实支持这一点,这意味着我的jsfiddle有一个错字或其他东西!

答案 3 :(得分:0)

<块引用>

注意:这是一项实验性技术 在生产中使用它之前,请仔细检查 Browser compatibility 表。

清除选择:

// get a Selection object representing the range of text selected by the user or the current position of the caret.
var selection = window.getSelection();
selection.removeAllRanges();

按节点设置选择:

var selection = window.getSelection();
var range = document.createRange();
    
range.selectNode(nodeToSelect);

selection.addRange(range);

按索引设置选择:

var selection = window.getSelection();
var range = document.createRange();
    
range.setStart(nodeToSelect, this.startIndex);
range.setEnd(nodeToSelect, this.endIndex);
    
selection.addRange(range);

获取当前选择

var range = window.getSelection().getRangeAt(0);