【问题标题】:How to avoid grabbing the image when using javascript drag n drop?使用javascript拖放时如何避免抓取图像?
【发布时间】:2011-08-16 05:41:53
【问题描述】:

这是我的问题,它很长,但实际上很简单,如果你愿意,请至少略读一下。

我将一个名为“app”的 div 拖到页面上。工作正常。除了偶尔当我抓住 div 并拖动而不是拖动 div 时,只拖动 div 的图像(在 firefox 和 webkit 浏览器中,而不是 ie),并且鼠标光标变成一个带有一条线的圆圈。这极大地损害了网页的交互性,我不认为这是一个编码问题,而是浏览器问题。

我将在下面显示用于拖动的代码,但首先您可能应该知道,为了拖动,我使用了三组变量,X1 和 Y1 是 pageX 和 pageY(clientX 或 clientY 取决于浏览器)和或每次鼠标移动都会记录下来。

X2 & Y2 是鼠标在 div 上按下时设置的,它们是鼠标位置与当前 div 的左上角位置的差值,用于当 div 被拖动时鼠标位置是'不等于左上角。

最后 dX 和 dY(delta X 和 delta Y 的缩写)等于 X1 - X2 和 Y1 - Y2,它们也是在鼠标移动时设置的,等于 X 的变化和 Y 的变化。

抱歉解释,但我认为它可能有助于消除与以下代码的任何混淆,这里是拖动代码。

app.onmousedown = function() {

    X2 = app.offsetWidth - ((app.offsetWidth + app.offsetLeft) - X1);
    Y2 = app.offsetHeight - ((app.offsetHeight + app.offsetTop) - Y1);

main.onmousemove = function() {
    dX = X1 - X2;
    dY = Y1 - Y2;

    app.style.top = dY + 'px';
    app.style.left = dX + 'px';
}
}

请注意,主 div 只是一个包含页面所有元素的容器,为了方便起见,因为它等于网页的大小。

这确实是我的问题,正如我之前所说,它有时只会发生,有时它工作得很好,没有任何错误。然而,它经常发生足以成为一个问题。我知道有可能使这项工作正常进行,因为我已经看到了不受此问题影响的拖放演示。因此,如果有人知道或有任何想法,如果不感谢您费心阅读本文,将不胜感激,我知道很抱歉。

ps:请不要推荐 javascript 框架,我不喜欢它们。这只是我的一个偏好,我不讨厌它们,我只是更喜欢 javascript。

【问题讨论】:

    标签: javascript animation drag-and-drop


    【解决方案1】:

    尝试将属性ondragstart="return false;" 添加到img 标签,这应该会禁用浏览器内置的拖放功能。对于a 标签,你通常也需要这样做

    【讨论】:

    • 并不是所有主流浏览器的标准行为
    猜你喜欢
    • 1970-01-01
    • 2011-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-20
    • 2020-07-15
    相关资源
    最近更新 更多