使用JavaScript移除选择

4

我正在开发一个带有可拖动滚动条的图像查看器。当用户拖动滚动条时,网页上的一些文本会被选中。我已经尝试过

window.getSelection().removeAllRanges();

但在IE7/8中似乎不起作用。也尝试了

document.getSelection().removeAllRanges();

这种方法在IE7/8中似乎也能“很好地”工作。

还有其他的方法吗?不知道是否有jQuery解决方案,如果有,请告诉我(:

编辑:这是onmouse事件的上下文。

$("#slideBar").mousedown(function(f) {
    mouseDown = true;
    some more code...
}

$(document).mouseup(function() {
    if (mouseDown) {
       window.getSelection().removeAllRanges();
       more code...
    }
}
2个回答

6

尝试在使用的函数上返回false,特别是对于“mousedown”事件。此外,在document.onselectstart和document.ondragstart上返回false也会有所帮助。


1
在IE中,您的元素的“ondragstart”上返回false是必不可少的,其他浏览器也是如此,例如“onmousedown”。这比尝试“removeAllRanges”更好。 - bobince

4
您可以添加一些CSS(使用jQuery)来处理这个问题:
element {
  -moz-user-select: none;
  -webkit-user-select: none;
  user-select: none;
}

无论如何,对于IE浏览器,您需要在该元素上添加一个专有属性(使用jquery):
unselectable="on"

这个属性必须添加到包含文本的元素中,还是可以应用于包含所有文本元素的父元素?因为我似乎无法在IE中设置不可选择的元素来使其正常工作,而该元素包含整个图像查看器。 - peirix
根据MSDN文档,这是不可能实现的(无法发布链接,请搜索“msdn unselectable”)。我之前不知道这一点。尝试使用BYK的方法,它应该在IE中起作用。 - Ionuț G. Stan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接