我有这个功能
function smth() {
var container = null;
var newContainer = null;
if (window.getSelection) { // all browsers, except IE before version 9
alert("first if");
var selectionRange = window.getSelection();
if (selectionRange.rangeCount > 0) {
var range = selectionRange.getRangeAt(0);
container = range.commonAncestorContainer;
newContainer = container;
}
}
else {
if (document.selection) { // Internet Explorer
alert("second if");
var textRange = document.selection.createRange();
container = textRange.parentElement();
}
}
if (newContainer) {
return newContainer.nodeName;
}
else {
alert("Container object for the selection is not available!");
}
}
现在,在我做了我需要做的选择后,我需要清除它。我尝试了一些没有用的东西,任何想法?
document.selection.clear ()
这没有用。
答案 0 :(得分:61)
对于有问题的浏览器:
document.selection.empty()
对于其他浏览器:
window.getSelection().removeAllRanges()
答案 1 :(得分:0)
注意:如果您选择输入或textarea元素的文本,那么如果您使用输入或textarea的标准本机html元素select方法,您的代码将具有更多的跨浏览器支持。
如果使用本机select方法选择了html输入或textarea元素,那么使用上面建议的方法在我的firefox 44.0.2上不起作用。什么有用,我想在所有浏览器上工作,正在运行以下代码,它创建一个新元素并选择它。新元素不能与display:none
或visibility:hidden
一起使用,因为它在我的Firebox中未被选中,所以诀窍是通过强制所有大小属性0\none
使其不可见。
var tempElement = document.createElement("input");
tempElement.style.cssText = "width:0!important;padding:0!important;border:0!important;margin:0!important;outline:none!important;boxShadow:none!important;";
document.body.appendChild(tempElement);
tempElement.select();
/* Use removeChild instead of remove because remove is less supported */
document.body.removeChild(tempElement);
答案 2 :(得分:0)
使用
(1,7491,1025)
如果这不起作用,那么使用
tinymce.activeEditor.selection.collapse()