Hammer.js не работает с Cordova InAppBrowser - PullRequest
0 голосов
/ 05 июля 2018

У меня есть хостинг-сайт, который использует Hammer.js для работы со свайпами. Функции считывания отлично работают как в настольных, так и в мобильных браузерах, но не работают в Cordova InAppBrowser (cordova-plugin-inappbrowser).

Cordova приложение:

var ref = cordova.InAppBrowser.open('http://10.200.200.210:80/#dashboard', '_blank', 'location=no,clearcache=yes,clearsessioncache=yes,hidenavigationbuttons=yes,hideurlbar=yes');

Веб-приложение (Knockout.js / html)

        var events = ['tap', 'doubletap', 'hold', 'rotate',
     'drag', 'dragstart', 'dragend', 'dragleft', 'dragright', 'dragup',
     'dragdown', 'transform', 'transformstart',
     'transformend', 'swipe', 'swipeleft', 'swiperight',
     'swipeup', 'swipedown', 'pinch', 'pinchin', 'pinchout'];

        ko.utils.arrayForEach(events, function (eventName) {
            ko.bindingHandlers[eventName] = {
                update: function (element, valueAccessor) {
                   // var BindingContext = valueAccessor()[0];
                    var EventToFire = valueAccessor()[0];

                    var options = {
                        dragLockToAxis: true,
                        dragBlockHorizontal: true
                    };

                    var hammerTime = new Hammer(element, options);
                    hammerTime.on(eventName, function (ev) {
                        //Fire the event with the item it was bound to.
                        EventToFire();
                    });
                }
            };
        });
<table width="100%" border="0" cellspacing="0" cellpadding="0" data-bind="swipeleft: [SwipeLeft], swiperight: [SwipeRight]">
        <tr>
            <td>
                 <input type="text" data-bind="value: customer.name, valueUpdate: 'afterkeydown'">
            </td>
            <td>
                 <input type="text" data-bind="value: customer.code, valueUpdate: 'afterkeydown'">
            </td>
            <td>
                 <input type="text" data-bind="value: customer.description, valueUpdate: 'afterkeydown'" style="width: 295px">
            </td>
        </tr>
</table>

Ответы [ 2 ]

0 голосов
/ 09 июля 2018

Проблема связана с кэшированием. Это было исправлено после удаления и переустановки приложения Android на моем устройстве. Спасибо.

0 голосов
/ 08 июля 2018

Hammer.js? Это возвращает плохие старые воспоминания.

Все мои проблемы со свайпом были решены, и я переключился на библиотеку event.swipe jQuery . Не стесняйтесь попробовать, я использую его во всех средах (Cordova, iOS, Android, Windows Phone и т. Д.) С большим успехом.

Я также создал модифицированную версию, которая поддерживает новые PointerEvents , которые могут работать или не работать лучше, посмотрите здесь . Это только для горизонтальной прокрутки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...