Сенсорный ход застревает после 30-80 раз и в консоли появляется ошибка - PullRequest
0 голосов
/ 04 июня 2018

Полная ошибка:

[Intervention] Ignored attempt to cancel a touchend event with cancelable=false, for example because scrolling is in progress and cannot be interrupted.
preventDefault  @   jquery.min.js:2
(anonymous) @   number_grid_game.php:239
each    @   jquery.min.js:2
(anonymous) @   number_grid_game.php:234
dispatch    @   jquery.min.js:2
y.handle    @   jquery.min.js:2

У меня есть код, где используются события касания.Когда я начинаю перетаскивать, на первых 10-30 шагах это нормально, но после 30-35 шагов это перетаскивание становится медленным и изо всех сил пытаются перетащить.Я не уверен, что является причиной этой проблемы, я новичок в работе с сенсорными событиями и не могу решить эту проблему.Вот код, обрабатывающий событие касания:

$(window)
.on('touchstart', function(event) {
    var missingNumbers, $target = $(event.target);

   if(!$target.hasClass('missing-number'))
        return;
    missingNumbers = MissingNumbers.ByElement($target);
    //185
    $.each(event.originalEvent.changedTouches, function(index, touch) {

        event.preventDefault();
        event.stopPropagation();

        missingNumbers.startDrag($target, touch.identifier, touch.pageX, touch.pageY);
    });
})

.on('touchmove', function(event) {
    $.each(event.originalEvent.changedTouches, function(index, touch) {
        var touchId = touch.identifier;

       if((touchId in MissingNumbers.DraggedElements)) {

            event.preventDefault();
            event.stopPropagation();

            MissingNumbers.DoCellDrag(touchId, touch.pageX, touch.pageY);
        }
    });
})

.on('touchend', function(event) {

    $.each(event.originalEvent.changedTouches, function(index, touch) {
        var touchId = touch.identifier;
        if((touchId in MissingNumbers.DraggedElements)) {
            event.preventDefault();
            event.stopPropagation();
            MissingNumbers.EndCellDrag(touchId);
        }
    });

});

будет оценено любое решение

1 Ответ

0 голосов
/ 06 июня 2018

У меня есть решение .. положить css = 'touch-action: none' в область div, и все будет работать нормально.

...