В общем суть вопроса в чем, имеется скрипт
var objects = document.getElementsByClassName('draggable');
var target = document.getElementById('target');
var startPos;
var dragObj;
var objectSelectedCount = 0;
var widthObj,
heightObj;
var targetOffsetWidth = target.offsetWidth,
targetOffsetHeight = target.offsetHeight,
targetOffsetLeft = target.offsetLeft,
targetOffsetTop = target.offsetTop;
function inArray(arr, elem) {
for (var i = 0; i < arr.length; i++) {
if (arr[i] === elem) {
return true;
}
}
return false;
}
document.addEventListener('touchstart', function(event) {
event.preventDefault();
event.stopPropagation();
if(inArray(objects,event.target)){
dragObj = event.target;
widthObj = parseInt(getComputedStyle(dragObj).width)/2;
heightObj = parseInt(getComputedStyle(dragObj).height)/2;
startPos = dragObj.style.WebkitTransform;
}else{
dragObj = null;
}
}, false);
document.addEventListener('touchmove', function(event) {
// event.preventDefault();
// event.stopPropagation();
if(dragObj){
var touch = event.targetTouches[0];
var touchOffsetX = touch.pageX - widthObj;
var touchOffsetY = touch.pageY - heightObj;
dragObj.style.WebkitTransform="translate("+touchOffsetX+"px,"+(touchOffsetY)+"px)";
if(
(event.changedTouches[0].pageX > targetOffsetLeft) &&
(event.changedTouches[0].pageX < (targetOffsetLeft + targetOffsetWidth)) &&
(event.changedTouches[0].pageY > targetOffsetTop) &&
(event.changedTouches[0].pageY < (targetOffsetTop + targetOffsetHeight))
){
var color = getComputedStyle(dragObj);
target.style.boxShadow = color.backgroundColor + '0 0 38px 10px';
}else{
target.style.boxShadow = '0 0 38px 10px rgba(255,255,255,1)';
}
}
}, false);
document.addEventListener('touchend', function(event) {
// event.preventDefault();
// event.stopPropagation();
if(
(event.changedTouches[0].pageX > targetOffsetLeft) &&
(event.changedTouches[0].pageX < (targetOffsetLeft + targetOffsetWidth)) &&
(event.changedTouches[0].pageY > targetOffsetTop) &&
(event.changedTouches[0].pageY < (targetOffsetTop + targetOffsetHeight))
){
dragObj.remove();
objectSelectedCount = objectSelectedCount + 1;
if(objectSelectedCount >= 3){
window.location.replace('/site/get-product');
}
}else{
dragObj.style.WebkitTransform=startPos;
}
}, false);
который откликается на прикосновения, в браузере на компьютере все идеально, но если попробовать запустить с планшета LENOVO бюджетной версии, то при попытке перемещения объекта в центре экрана заметно начинает подвисать, т.е. есть грех что в этом виноват я и не правильно рассчитываю смещение объекта.
Как можно побороть эти зависания?