【发布时间】:2012-07-11 07:12:26
【问题描述】:
在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";
}
【问题讨论】:
-
你尝试过哪些触控设备(手段)
标签: javascript html css touch dom-events