使用D3(v3.4.12)在触控设备拖放时源与目标元素相同的问题
触控设备拖放功能:源与目标元素识别异常
在触控设备上实现拖放功能时,出现源元素与目标元素识别错误的问题:理想状态下,从Polygon1拖拽到Polygon2时,touchstart触发的源元素应为Polygon1,touchend触发的目标元素应为Polygon2,但实际测试中两次打印的元素ID均为Polygon1。
输出截图:
相关代码
var amatrix = [1, 0, 0, -1, 0, 500]; var svg = d3.select('body').append('svg') .attr('height', 500) .attr('width', 700); var grp = svg.append("g") .attr("transform", "matrix(" + amatrix + ")"); grp.append('polygon') .attr('points', "50,50 150,50 150,150 50,150") .attr('stroke', '#f00') .attr('fill', 'red') .attr("id", 'Polygon_1'); grp.append('polygon') .attr('points', "200,200 300,200 300,300 200,300") .attr('stroke', '#f00') .attr('fill', 'blue') .attr("id", 'Polygon_2'); grp.append('polygon') .attr('points', "350,350 450,350 450,450 350,450") .attr('stroke', '#f00') .attr('fill', 'green') .attr("id", 'Polygon_3'); svg.on("touchstart", function (event) { console.log(d3.event.srcElement.id); console.log('touchstart'); d3.event.preventDefault(); d3.event.stopPropagation(); }, { passive: false }); svg.on("touchend", function (event) { console.log(d3.event.srcElement.id); console.log('touchend'); d3.event.preventDefault(); d3.event.stopPropagation(); }, { passive: false });
内容的提问来源于stack exchange,提问作者Godson Dabre
相关产品推荐
相关产品推荐

