我在堆栈溢出的另一个问题上找到了代码,我使用相同的代码,但它不起作用。我已经在iphone上尝试使用safari和chrome以及在使用chrome的Android设备上。无法弄清楚事件处理程序无法正常工作的原因。
手势的目的是使用rgb值更改背景颜色。如果要检查,桌面版本可以正常运行并在andy.serra.us上运行。现在,我正在尝试构建移动版本。
document.body.addEventListener('touchstart', handleTouchStart(event), false);
document.body.addEventListener('touchmove', handleTouchMove(event), false);
var xDown = null;
var yDown = null;
function handleTouchStart(event) {
if(screen && screen.width < 480 && !(document.getElementsByClassName('in')[0])) {
xDown = event.touches[0].clientX;
yDown = event.touches[0].clientY;
}
};
function handleTouchMove(event) {
if(screen && screen.width < 480 && !(document.getElementsByClassName('in')[0])) {
if ( ! xDown || ! yDown ) {
return;
}
var xUp = event.touches[0].clientX;
var yUp = event.touches[0].clientY;
var xDiff = xDown - xUp;
var yDiff = yDown - yUp;
if ( Math.abs( xDiff ) > Math.abs( yDiff ) ) {/*most significant*/
if ( xDiff > 0 ) {
red -= increment;
if(red < 0) { red = 0; }
document.getElementById("val-display").innerHTML = "Red: " + red + "<br>Green: " + green + "<br>Blue: " + blue + "<br>Hex: #" + fullColorHex(red, green, blue);
} else {
blue -= increment;
if(blue < 0) { blue = 0; }
document.getElementById("val-display").innerHTML = "Red: " + red + "<br>Green: " + green + "<br>Blue: " + blue + "<br>Hex: #" + fullColorHex(red, green, blue);
}
} else {
if ( yDiff > 0 ) {
green -= increment;
if(green < 0) { green = 0; }
document.getElementById("val-display").innerHTML = "Red: " + red + "<br>Green: " + green + "<br>Blue: " + blue + "<br>Hex: #" + fullColorHex(red, green, blue);
}
}
setBackgroundColor();
setTextColorFromBackground("title", false);
setTextColorFromBackground("side_box", true);
/* reset values */
xDown = null;
yDown = null;
}
};
答案 0 :(得分:0)
如果你想要的是一个跨平台的滑动监听器,我只是在npm上传了一个。它被称为goodtap并处理点击,滑动,长按和外部点击,并且不需要单独的事件监视器,因此任何生成的html都将自动工作。