перетаскиваемая проблема JS и JQuery-UI в IE 7 - 8

0

Я использую Hammer js и jQuery ui draggable. При перетаскивании элемента в IE 7-8 перетаскиваемый элемент замерзает в следующий момент после выполнения перетаскивания. Хотя я использую плагины для разных целей, они вызывают проблему. Возможно, это связано с тем, как событие Hammer js связано с IE 7-8.

Если я прокомментирую прослушиватель событий Hammer js, он будет работать абсолютно нормально.

Hammer js:

shortlistedProducts.hammer()
                .on('swipe', function (e) {
                    var gestureDirection = e.gesture.direction,
                        productLength = shortList.find('.product').length,
                        nextSlide = (currentThumb + productsInLine) >= productLength ? productLength : currentThumb + productsInLine,
                        prevSlide = (currentThumb - productsInLine) < 0 ? null : currentThumb - productsInLine;


                    if (gestureDirection === 'left') {

                        thisObj.slideAnimationHandler("right", nextSlide === productLength, nextSlide);

                    } else if (gestureDirection === 'right') {

                        thisObj.slideAnimationHandler("left", prevSlide === null, prevSlide);

                    }

                });

JQuery:

product.draggable({
                appendTo: 'body',
                helper: 'clone',
                zIndex: 10010,
                scroll: false
            });

            productContainer.droppable({
                tolerance: 'touch',
                activeClass: "ui-state-default",
                activate: function (event, ui) {

                    if (!shortList.hasClass('visible')) {
                        shortList.animate({ 'bottom': 0 }).removeClass('preview').addClass('visible');
                    }

                },
                deactivate: function (event, ui) {

                    if (!shortlistedProducts.find('.product').length) {
                        shortList.animate({ 'bottom': '-' + shortList.outerHeight() }).removeClass('visible');
                    }
                },
                drop: function (event, ui) {
                    var target = jQuery(this).find('.products'),
                        targetLength = target.children('.product').length;

                    thisObj.shortListHandler(ui.draggable, 'add');

                    thisObj.productCountHandler();
                }
            });
Теги:
internet-explorer
hammer.js

1 ответ

0

Проблема была в hammer.js. Как только я прокомментировал функцию hammer.js, он работал хорошо, поэтому я подумал, что если мне удастся остановить hammer.js от выполнения на IE 7-8, проблема будет решена. На самом деле жесты не понадобятся в IE 7-8, поскольку на борту нет сенсорных устройств с IE 7-8. Решение моей проблемы состояло в том, чтобы выполнить функцию hammer.js только в том случае, если устройство поддерживает жест, который в случае IE 7-8 является ложным.

'ontouchstart' in document.documentElement) || navigator.msMaxTouchPoints > 0

Ещё вопросы

Сообщество Overcoder
Наверх
Меню