Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/api/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript dojo-鼠标(x,y)-拖放-失败_Javascript_Dojo_Drag And Drop_Onmousemove - Fatal编程技术网

Javascript dojo-鼠标(x,y)-拖放-失败

Javascript dojo-鼠标(x,y)-拖放-失败,javascript,dojo,drag-and-drop,onmousemove,Javascript,Dojo,Drag And Drop,Onmousemove,我正试图使用dojo.dnd拖动一个对象,但希望化身与对象处于相同的位置(相对于鼠标) 即,如果一个人在物体的中间点击,那么鼠标光标将位于化身的中间。 我有各种奇怪的结果。 如果我将函数连接到body.onmousemove,dnd的下降部分将失败 我怎样才能让它工作 DnD事件 .target { 边框:1px点灰色; 宽度:300px; 高度:300px; 填充:5px; -moz边界半径:8pt 8pt; 半径:8pt; } .source { 边框:1px点天蓝色; 高度:200p

我正试图使用dojo.dnd拖动一个对象,但希望化身与对象处于相同的位置(相对于鼠标)

即,如果一个人在物体的中间点击,那么鼠标光标将位于化身的中间。

我有各种奇怪的结果。 如果我将函数连接到body.onmousemove,dnd的下降部分将失败

我怎样才能让它工作



DnD事件


.target

{

边框:1px点灰色;

宽度:300px;
高度:300px;

填充:5px;

-moz边界半径:8pt 8pt;

半径:8pt;

}

.source

{

边框:1px点天蓝色;

高度:200px;

宽度:300px;
-moz边界半径:8pt 8pt;

半径:8pt;

}

.dojoDndItemOver

{

背景:#feb;

边框:1px点灰色;

}



.target.dojoDndItemAnchor

{

背景:#ededed;

边框:1px纯灰色;

}

.dojodndavatherheader{

显示:无;

}




dojo.require(“dojo.dnd.Source”)
dojo.require(“dojo.dnd.Container”)
dojo.require(“dojo.dnd.Moveable”)
dojo.require(“dojo.dnd.Manager”)
dojo.require(“dojo.dnd.Avatar”)

var mouse={x:0,y:0,句柄:未定义}
功能鼠标命令(ev){

var px,py;

ev=ev | | window.event;

if(ev.pageX | | ev.pageY){

px=ev.pageX;py=ev.pageY;

}其他{

px=ev.clientX+dojo.body().scrollLeft-dojo.body().clientLeft;

py=ev.clientY+dojo.body().scrollTop-dojo.body().clientTop;

}



鼠标={x:px,y:py};

//dojo.byId(“msg”).innerHTML=dojo.toJson(鼠标);



}

//dnd在注释掉以下行时起作用。(定位失败)

var mchandle=dojo.connect(文档“onmousemove”、“mouseCoords”)
//dojo.query(“.dojodnitem”).connect(“onclick”,“mouseCoords”)
//dojo.dnd.Source.onMouseDown('mouseCoords')











var项目价格
var总计=0
函数附加项(目标,节点){

for(var i=0;i

{total+=parseFloat((target.getItem(nodes[i].id)).data);}

dojo.byId(“成本”).innerHTML=total;

}



函数减法项(目标,节点){

for(var i=0;i

total-=parseInt((target.getItem(nodes[i].id)).data);

}

dojo.byId(“成本”).innerHTML=total;

}



函数ShowPrice(目标,节点){

var总和=0;

for(var i=0;i

dojo.dnd.manager().OFFSET_X=0-(mouse.X-dojo.abs(nodes[i]).X);

dojo.dnd.manager().OFFSET_Y=0-(mouse.Y-dojo._abs(nodes[i]).Y);

dojo.dnd.manager().updateAvatar();

sum+=parseInt((target.getItem(nodes[i].id)).data);

}


dojo.byId(“msg”).innerHTML=“所选商品价格为$”+sum;

}



函数ClearMsg()

{dojo.byId(“msg”).innerHTML=“”;}



函数init(){







dojo.subscribe(“/dnd/drop”),函数(源、节点、iscopy){

var t=dojo.dnd.manager().target;

ClearMsg();

if(t==source){return;}

if(t==cart){AddItems(t,nodes);}

if(t==shelf){减法项(t,节点)}




});



dojo.subscribe(“/dnd/start”),函数(源、节点、iscopy){

ShowPrice(源、节点);

});



dojo.subscribe(“/dnd/cancel”,function(){

ClearMsg();

});



}





dojo.addOnLoad(init)






























来源














目标

var mchandle;
dojo.require("dojo.dnd.Source");
var lastSrc;
function init() {
    dojo.subscribe("/dnd/drop", function(source, nodes, iscopy) {
        dojo.byId("msg").innerHTML += " drop";
        dojo.disconnect(mchandle);
    });
    dojo.subscribe("/dnd/start", function(source, nodes, iscopy) {
        lastSrc = source;
        mchandle = dojo.connect(dojo.doc, "onmousemove", "mouseCoords");
        dojo.byId("msg").innerHTML = "start";
        var px = 0;
        var py = 0;
        for (var i = 0; i < nodes.length; i++) {
            var nPos = dojo._abs(nodes[i]);
            px = nPos.x > px ? nPos.x : px;
            py = nPos.y > py ? nPos.y : py;
        }
        dojo.dnd.manager().OFFSET_X = 0 - (source._lastX - px);
        dojo.dnd.manager().OFFSET_Y = 0 - (source._lastY - py);


    });
    dojo.subscribe("/dnd/cancel", function() {
        dojo.byId("msg").innerHTML += " cancel";
        dojo.query("[dojotype=\"dojo.dnd.Source\"]").forEach(function(node, index, array) {
            var elemXY = dojo.coords(node);
            if ( //in source box
            (elemXY.x <= document.mouse.x && document.mouse.x <= (elemXY.x + elemXY.w)) && (elemXY.y <= document.mouse.y && document.mouse.y <= (elemXY.y + elemXY.h))) {
                var s = new dojo.dnd.Source(node, null);
                s.insertNodes(true, lastSrc.getSelectedNodes(), null, null);
            }
        });
        dojo.disconnect(mchandle);
        lastSrc = null;
    });
}
dojo.addOnLoad(init);
function mouseCoords(ev) {
    var px, py;
    ev = ev || window.event;
    if (ev.pageX || ev.pageY) {
        px = ev.pageX;
        py = ev.pageY;
    } else {
        px = ev.clientX + dojo.body().scrollLeft - dojo.body().clientLeft;
        py = ev.clientY + dojo.body().scrollTop - dojo.body().clientTop;
    }
    document.mouse = {
        "x": px,
        "y": py
    };
}
_5.getItem(_6[i].id) is undefined
} catch (e) {\r\n                                 dojo.js (line 203)