2016-03-08 54 views
0

我已经在mousemove事件中获得目标,它很好,但我没有在touchleave事件中获取ipad和android目标。如何找到touchmove更改为其他对象

<!DOCTYPE html> 
<html> 
<body> 

<svg width="300" height="200" style="border:0px solid #ccc;"> 
    <polygon id="a" points="100,10 40,198 190,78 10,78 160,198" style="fill:lime;stroke:purple;stroke-width:5;fill-rule:evenodd;" /> 
</svg> 

<script> 

document.getElementById('a').addEventListener('mousemove', function(e) { 
    document.getElementById("a").style.fill = 'red'; 
}, false); 

document.getElementById('a').addEventListener('mouseleave', function(e) { 
    document.getElementById("a").style.fill = 'lime'; 
}, false); 

document.getElementById('a').addEventListener('touchmove', function(e) { 
    document.getElementById("a").style.fill = 'red'; 
}, false); 

document.getElementById('a').addEventListener('touchleave', function(e) { 
    document.getElementById("a").style.fill = 'lime'; 
}, false); 

</script> 

</body> 
</html> 

回答

0

有没有这样的事情作为“touchleave”事件。显然有一个建议的规范,但it was never implemented。如果你想知道用户触摸什么时候离开某个区域,最好的办法是手动跟踪touchmove事件并从那里找出它。

0

有三个触摸事件。

  1. touchstart
  2. touchmove
  3. touchend

而且请注意的 '鬼点击' 使用触摸事件时!

0

由于您svg环绕四面多边形,你可以这样做:

放的TouchMove事件对SVG:

var svg = document.querySelector('svg'); 
var polygon = document.getElementById("a"); 

svg.addEventListener('touchmove', function(e) { 
    if (e.target === polygon) { 
     // touch is inside polygon 
     polygon.style.fill = 'red'; 
    } else { 
     // touch is outside polygon 
     polygon.style.fill = 'lime'; 
    } 
}, false); 

(此代码在所有的浏览器,你会必须修改一下)

相关问题