我目前正在为 HTML5 拖放而苦苦挣扎,因为我想实现一些特定的目标。
我有一个可以使用 HTML5 API 拖动的 div,但我只希望在用户真正想要的情况下进行拖动(因为它会触发更多的处理程序)。
dragstart
这就是为什么我在满足某个条件时触发mousemove
.
var fnMousemove = function (oEvent) {
if (myCondition) {
document.removeEventListener("mousemove", fnMousemove);
oDraggable.setAttribute("draggable", true);
oDraggable.addEventListener("dragstart", fnDragstart);
oDraggable.addEventListener("drag", fnDrag);
oDraggable.addEventListener("dragend", fnDragend);
// Fire a dragstart event, now that we know what to do with it
var e = document.createEvent("MouseEvents"); //$NON-NLS-1$
e.initEvent("dragstart"); //$NON-NLS-1$
oDraggable.dispatchEvent(e);
}
};
但正如您已经猜到的那样,从dragstart
正确触发的意义上说,这不起作用,但没有其他拖动事件(drag
,dragend
...)。
有什么我没有妥善处理的吗?或者你能看到从鼠标移动处理程序启动浏览器拖放的解决方法吗?(按住鼠标按钮)
提前致谢!
你可以在这里找到一个简单的运行示例