在 mouseUp
或者 touchEnd
事件发生时,我想获取发生事件的元素的引用。
在这个例子中,你需要点击一个元素,拖动鼠标并释放在另一个元素上。当鼠标释放时,那个元素的背景颜色将变成红色。我的代码对于鼠标事件是正确的,但在触摸设备上无法正常工作。
当 touchStart
在一个元素上,手指释放在另一个元素上时,我只能得到第一个元素的引用。
我需要如何改变代码才能使触摸事件的行为与鼠标事件完全一致?
var isMouseDown = false;
var panel1 = document.getElementById( 'panel1' );
var panel2 = document.getElementById( 'panel2' );
panel1.onmousedown = onDocumentMouseDown;
panel1.onmouseup = onDocumentMouseUp;
panel1.onmousemove = onDocumentMouseMove;
panel1.addEventListener( 'touchstart', onDocumentTouchStart, false );
panel1.addEventListener( 'touchmove', onDocumentTouchMove, false );
panel1.addEventListener( 'touchend', onDocumentTouchEnd, false );
panel2.onmousedown = onDocumentMouseDown;
panel2.onmouseup = onDocumentMouseUp;
panel2.onmousemove = onDocumentMouseMove;
panel2.addEventListener( 'touchstart', onDocumentTouchStart, false );
panel2.addEventListener( 'touchmove', onDocumentTouchMove, false );
panel2.addEventListener( 'touchend', onDocumentTouchEnd, false );
function onDocumentMouseDown(event) {
event.preventDefault();
panel1.style.background="#2E442E";
panel2.style.background="#5D855C";
}
function onDocumentMouseUp(event) {
event.preventDefault();
this.style.background="#ff0000";
}
function onDocumentMouseMove( event ) {
}
function onDocumentTouchStart( event ) {
event.preventDefault();
panel1.style.background="#2E442E";
panel2.style.background="#5D855C";
}
function onDocumentTouchMove( event ) {
}
function onDocumentTouchEnd( event ) {
event.preventDefault();
this.style.background="#ff0000";
}