Случайные внутренние ошибки jquery mobile/angular с браузером Android

Я реализовал веб-приложение html5, используя jquery-mobile, angularjs и адаптер jqm angular.

На устройствах Android, использующих браузер Android по умолчанию (хром работает нормально!) Я случайно получаю ошибки в файле jqm, такие как «# не имеет метода addClass» или «jqmEnhanceable». Это всегда воспроизводится путем перезагрузки сайта несколько раз.

Отладка показала, что во время процесса инициализации angular, особенно перед вызовом $compile для документа, адаптер вызывает .page() для всех div, аннотированных data-role="page".

Это приводит к созданию большого количества мобильных виджетов jquery, т.е. создается много «нагрузки». Ошибки всегда возникают во время вызова .page(), но количество страниц, которые обрабатываются до возникновения ошибки, варьируется случайным образом, а иногда это работает полностью.

Мне кажется, что в какой-то момент браузер «забывает» методы jquery или jquery mobile. Делал ли кто-нибудь из вас подобные наблюдения? Известны ли проблемы с браузером Android по умолчанию?

Проблема также описана здесь.

Заранее большое спасибо!! Норманн


person user3065930    schedule 04.12.2013    source источник
comment
Я также вижу, что Android 4.1.2 просто случайная ошибка из-за того, что кажется тяжелой загрузкой javascript. Ошибки не совпадают. Это платформа из ада.   -  person Andy Ray    schedule 11.12.2013
comment
У меня похожие проблемы, хотя я не использую плагин, а просто angularJS и jQuery mobile вместе. Что-то, что работало долгое время (по мере добавления функций), перестало работать, возможно, приложение стало слишком большим.   -  person Nik Dow    schedule 19.03.2014


Ответы (1)


Это не полный ответ, но может помочь кому-то с похожими проблемами.

Моя проблема возникла после касания ng-щелчка по элементу списка во всплывающем окне jQuery для мобильных устройств. У функции $scope, вызываемой ng-click, было две задачи: 1. Установить значение в $scope, которое является ng-моделью для поля — всплывающее окно активируется при щелчке в этом поле. 2. Закройте всплывающее окно.

Таким образом, обновленное поле находилось за всплывающим окном в то время, когда angular обновлял представление.

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

Эта проблема возникала на одном из двух моих тестовых устройств Android. На более старом устройстве (планшет Samsung, Android 3.1, версия браузера 3.1-UEKME) была проблема, на более новом устройстве (телефон HTC, Android 4.0.3, версия браузера 4.0.2213303110.348012) всегда все было в порядке - это может быть связано с ошибками. устранены в более поздних выпусках.

person Nik Dow    schedule 19.03.2014