如何使用JavaScript临时禁用文本选择?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (11)

这是一个具体的问题,所以我会正确地做到这一点。

我正在为一个web应用程序的一部分简单拖放例程工作,虽然拖放位工作正常,但该操作在操作过程中变得非常难看,因为浏览器仍然执行默认操作并且工作正常在文本选择上。

我已经尝试了一些解决方案,主要涉及从mousedown返回false或点击事件,尽管它们在某些浏览器中禁用了文本选择,但它们似乎完全禁用了mouseup事件,从而破坏了脚本的“丢弃”位,挂在鼠标周围的perma-floating图标 - 没有乐趣。

我真的不希望文本选择完全消失,我只是想建议浏览器...拖动时不做,如果这是有道理的。由于我知道受影响的区域(涉及iframe),我可以轻松地将属性应用于受影响的元素等。如有必要,我可以发布代码,但我正在寻找更多的常规解决方案。由于这只是一种美学,所以我正在寻找一种适用于大多数浏览器的修复方法,但这并不是那么重要。

提问于
用户回答回答于

在W3C浏览器中,您可以调用对象的preventDefault方法event。IE相当于设置returnValuefalse

function stopDefault(e) {
    if (e && e.preventDefault) {
        e.preventDefault();
    }
    else {
        window.event.returnValue = false;
    }
    return false;
}

只要重新读这个问题,你可能也想阻止处理实际拖动的代码部分的默认动作,而不是仅仅在最初的mousedown或单击。

用户回答回答于

据我所知,拖动的元素必须位于鼠标指针下方的其他元素上。如果它将随鼠标指针一起移动,则会阻止页面上的任何选择。

扫码关注云+社区