次の関数を使用して、ハンドルでdivをドラッグしています。
function enableDragging(ele) {
var dragging = dragging || false,
x, y, Ox, Oy,
current;
enableDragging.z = enableDragging.z || 1;
var grabber = document.getElementById("myHandelDiv");
grabber.onmousedown = function(ev) {
current = ev.target.parentNode;
dragging = true;
x = ev.clientX;
y = ev.clientY;
Ox = current.offsetLeft;
Oy = current.offsetTop;
current.style.zIndex = ++enableDragging.z;
console.log(dragging);
window.onmousemove = function(ev) {
pauseEvent(ev);
if (dragging == true) {
var Sx = ev.clientX - x + Ox,
Sy = ev.clientY - y + Oy;
current.style.top = Sy + "px";
current.style.left = Sx + "px";
document.body.focus();
// prevent text selection in IE
document.onselectstart = function () { return false; };
// prevent IE from trying to drag an image
ev.ondragstart = function() { return false; };
return false;
}
};
window.onmouseup = function(ev) {
dragging && (dragging = false);
}
};
}
function pauseEvent(e){
if(e.stopPropagation) e.stopPropagation();
if(e.preventDefault) e.preventDefault();
e.cancelBubble=true;
e.returnValue=false;
return false;
}
私には2つの問題があります:
- IE 7&8では動作しません。何らかの理由でエラーは発生しません。
- 一部のブラウザでドラッグ中にテキストが選択されると、ドラッグが遅れて表示されます
私はこのようにドラッグを開始します:
var ele = document.getElementById("divDragWrapper");
enableDragging(ele);
更新、IEでこのエラーが発生しています:
SCRIPT5007:プロパティ'target'の値を取得できません:オブジェクトがnullまたは未定義です
この行:current = ev.target.parentNode;