如果没有合适的事件,例如select
and selectstart
(在 Firefox 中确实不存在,它具有select
事件但仅将其应用于表单控件),您所能做的就是使用鼠标和键盘事件,正如您在问题中所建议的那样。阻止文档中所有事件的默认操作mousedown
是不好的,因为它会阻止所有交互元素(如链接和表单元素)工作。相反,您可以执行以下操作,在使用鼠标和键盘进行选择时将其删除。
不过,它不会阻止通过上下文和编辑菜单中的“全选”进行选择,因为在 Firefox 中根本无法检测到这些内容。如果您需要处理这个问题,轮询选择是您唯一的希望。
function killSelection() {
window.getSelection().removeAllRanges();
}
document.addEventListener("mousedown", function(evt) {
document.addEventListener("mousemove", killSelection, false);
}, false);
document.addEventListener("mouseup", function(evt) {
document.removeEventListener("mousemove", killSelection, false);
}, false);
document.addEventListener("keydown", killSelection, false);
window.addEventListener("blur", function(evt) {
document.removeEventListener("mousemove", killSelection, false);
}, false);