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

时间:2009-05-21 06:02:07

标签: javascript html drag-and-drop behavior

这是一个特定问题,所以我会明白这一点。

我正在为一个Web应用程序的一部分做一个简短而简单的拖放例程,虽然拖放位工作正常,但在操作过程中该网站变得非常丑陋,因为浏览器仍然执行默认操作操作和文本选择。

我尝试了一些主要涉及从mousedown或click事件中返回false的解决方案,虽然它们在某些浏览器中禁用了文本选择,但它们似乎也完全禁用了mouseup事件,破坏了脚本的“drop”位并将这个永久浮动图标悬挂在鼠标周围 - 这并不好玩。

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

谢谢!

2 个答案:

答案 0 :(得分:18)

在W3C浏览器中,您可以在preventDefault对象上调用event方法。 IE等价物是将returnValue设置为false

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

编辑:只需重新阅读问题,您可能还想阻止代码中处理实际拖动的部分中的默认操作,而不仅仅是初始的mousedown或click。

答案 1 :(得分:0)

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