16

这是一个具体的问题,所以我会直截了当。

我正在为 Web 应用程序的一部分开发一个简短的拖放例程,尽管拖放位工作正常,但该站点在操作过程中变得非常丑陋,因为浏览器仍然执行默认操作并且可以正常工作关于文本选择。

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

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

谢谢!

4

2 回答 2

18

在 W3C 浏览器中,您可以调用对象preventDefault上的方法event。IE 等效项是将 设置returnValuefalse.

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

编辑:只需重新阅读问题,您可能还希望在处理实际拖动的代码部分中阻止默认操作,而不仅仅是在初始鼠标按下或单击时。

于 2009-05-21T06:24:43.110 回答
0

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

于 2009-05-21T06:13:04.857 回答