0
我使用下面的函數通過手柄拖動一個div:自定義div可拖動功能 - 窗口邊界?
function enableDragging(ele) {
var dragging = dragging || false,
x, y, Ox, Oy,
current;
enableDragging.z = enableDragging.z || 1;
var grabber = document.getElementById("wrapId");
grabber.onmousedown = function (ev) {
ev = ev || window.event;
var target = ev.target || ev.srcElement;
current = target.parentNode;
dragging = true;
x = ev.clientX;
y = ev.clientY;
Ox = current.offsetLeft;
Oy = current.offsetTop;
current.style.zIndex = ++enableDragging.z;
document.onmousemove = function (ev) {
ev = ev || window.event;
pauseEvent(ev);
if (dragging == true) {
var Sx = ev.clientX - x + Ox,
Sy = ev.clientY - y + Oy;
current.style.left = Math.max(Sx, Math.min(document.body.offsetWidth - Sx, 0)) + "px";
current.style.top = Math.max(Sy, Math.min(document.body.offsetHeight - Sy, 0)) + "px";
document.body.focus();
document.onselectstart = function() {
return false;
};
ev.ondragstart = function() {
return false;
};
document.body.style.MozUserSelect = "none";
document.body.style.cursor = "default";
return false;
}
}
document.ondragstart = function() {
return false;
}
document.onmouseup = function (ev) {
ev = ev || window.event;
dragging && (dragging = false);
if (ev.preventDefault) {
ev.preventDefault();
} else {
e.cancelBubble = true;
e.returnValue = false;
}
document.body.style.MozUserSelect = "text";
document.body.style.cursor = "default";
//toggleEnableSelectStart(true);
return false;
}
};
}
我想邊界設置爲股利不能實際的瀏覽器窗口的界限之外拖動。
上面的函數完成了這個的50%,它不會讓用戶拖動左上角和左下界外的div。然而,它將用戶拖到底部和右側。
任何想法如何解決這個問題?
無法得到它的工作:/仍然只剩下和頂部 – Alosyius 2013-03-03 20:17:40
對不起,考慮了div的寬度以及 – 2013-03-03 20:18:26
仍然我可以拖動外部的權利和底部的div,只有頂部和左邊界工作:/ – Alosyius 2013-03-03 20:21:56