【问题标题】:I can drag elements outside the document window, but not outside a simple div. Why?我不能将元素拖到文档窗口之外,但不能拖到简单的 div 之外。为什么?
【发布时间】:2013-03-24 19:21:21
【问题描述】:

我试图通过捕获鼠标坐标并相应地移动内容来将内容从文档中拖出。目前我使用 document.addEventListener ,即使我将东西拖到窗口外也能很好地工作。功能正在增加,为了跟上复杂性,我宁愿使用 div 和 div1.addEventListener。

但是这个改变并不能让我把东西拖到我的 div 之外,更不用说我的窗口之外了。我说的是仅拖动(鼠标在 div 内向下,然后将鼠标拖出)。我一离开 div,它就会停下来。

我不明白发生了什么,我很久以前就尝试过它,我记得这是工作代码。

fiddle here

window.onload = function()
{
    div1 = document.getElementById("div1");

    document.addEventListener('mousedown', function(evt){mouseDown(evt, this)}, false);
    document.addEventListener('mousemove', function(evt){mouseMove(evt, this)}, false);
    document.addEventListener('mouseup', function(evt){mouseUp(evt, this)}, false);

    // div1.addEventListener('mousedown', function(evt){mouseDown(evt, this)}, false);
    // div1.addEventListener('mousemove', function(evt){mouseMove(evt, this)}, false);
    // div1.addEventListener('mouseup', function(evt){mouseUp(evt, this)}, false);
}

function mouseMove(evt, caller)
{
}

function mouseDown(evt, caller)
{
}

function mouseUp(evt, caller)
{
}

【问题讨论】:

    标签: javascript addeventlistener mousemove


    【解决方案1】:

    由于 div 的坐标没有改变,当拖动超出其边界时,它会停止获取 mouseMove 事件。

    【讨论】:

    • 但是如果鼠标离开窗口,文档也是如此
    • 我必须回去阅读规范才能确定,但​​我认为窗口是一个特例。根据您需要支持的浏览器,我建议您阅读 HTML5 拖放 API。从长远来看,它可能会让你的生活更轻松。
    • HTML 拖放是很特别的。我没有拖动 HTML 元素。我在画布上拖动形状。我想我应该早点提到这一点。
    • 我在网上搜索过,似乎不可能。但是,我检查了大约一个月前为 iPhone 编写的一些代码,我可以做到。这很奇怪,因为它像 Chrome 一样使用 webkit,并且在 Chrome 中不起作用。奇怪的。虽然代码有点冗长,但仍然如此。
    猜你喜欢
    • 1970-01-01
    • 2011-01-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-11
    相关资源
    最近更新 更多