LINUX.ORG.RU

Не работает upload с модального окна на android из полноэкранных приложений android-a!

 , , ,


0

1

Пишу responsive сайт, там есть простенький аплоадер-кроппер.
Всё хорошо работает на компьютере, хорошо работает из angular SPA на мобилках.

Если этот аплоадер разместить на модальном окне bootstrap'а, на компьютере работает, на андройдах работает ТОЛЬКО если для аплоада выбрать ES explorer - галереи и Sony, и Google штатная сбрасывают модальное окно. Причём, И в chrome, И в firefox.

Куда копать, что гуглить??? На SO даже просто на модальном окне вебмакаки не могут аплоад сделать...

Если кто хочет сам посмотреть, давайте facebook - это я под него сервис пишу.

★★★★★

Последнее исправление: Shadow (всего исправлений: 2)

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

Vit ★★★★★
()
Ответ на: комментарий от Vit

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

Shadow ★★★★★
() автор топика
Последнее исправление: Shadow (всего исправлений: 1)
Ответ на: комментарий от Shadow

Имелось в виду время, пока выполняется текущий синхронный код при получении события.

Если ты отложишь выполнение через setTimeout, то указатель на event у тебя сохранится, но некоторые данные из него уже могут разрушиться. Конкретно для файлов сделано из соображений безопасности.

Vit ★★★★★
()
Ответ на: комментарий от Vit

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

Shadow ★★★★★
() автор топика
Ответ на: комментарий от Vit

Нашёл, что происходит:
http://stackoverflow.com/questions/14274727/android-browser-refreshes-page-af...

В общем, буду сохранять в localstorage данные формы, и только потом делать upload картинки.

Форма будет проверять сначала localstorage, и заполнять значения, а при submit обнулять localstorage.

Не посоветуешь, имеет смысл менять ngRoute на uiRouter?

Shadow ★★★★★
() автор топика
Ответ на: комментарий от ZuBB

Вопрос в экономии памяти в мобильном браузере.
Андроид тупо закрывает браузер с модальным окном bootstrap, пока ты выбираешь картинку для аплоада.

Я из-за этого даже от jQuery отказался, использую то, что в ангуляре.

Shadow ★★★★★
() автор топика
Ответ на: комментарий от Shadow

про экономию не скажу. с мобильной разработкой дела не имел. мой коллега запилил демку мобильной версии вебапликухи которую мы пилим. вот конфиг бовера из его проэкта

{
  "name": "bla.....",
  "version": "0.0.0",
  "dependencies": {
    "jquery": "*",
    "lodash": "~3.10.1",
    "angular": "~1.3.x",
    "moment": "~2.12.0",
    "angular-mocks": "~1.3.x",
    "angular-ui-router": "*",
    "angular-cookies": "~1.3.x",
    "angular-animate": "~1.3.x",
    "angular-touch": "~1.3.x",
    "angular-sanitize": "~1.3.x",
    "angular-translate": "~2.8.1",
    "angular-base64": "~2.0.5",
    "angular-local-storage": "~0.2.7",
    "ngInfiniteScroll": "~1.2.2",
    "highcharts": "~4.2.4",
    "highcharts-ng": "~0.0.11"
  },
  "resolutions": {
    "angular": "~1.3.x",
    "ngInfiniteScroll": "~1.2.2"
  }
}

задача стояла запилить мобильную версию как демку-прототип. какая будет дальше судьба у этого кода пока новостей нет

ZuBB ★★★★★
()
Последнее исправление: ZuBB (всего исправлений: 1)
Ответ на: комментарий от ZuBB

Ну у меня примерно та же цель, только приложение должен использовать пьяный человек на вечеринке - значит, mobile first.
Только я ненавижу JavaScript и лентяй, у меня бэк-энд на питоне, и фронтенд собирает python webassets автоматически.

Shadow ★★★★★
() автор топика
Последнее исправление: Shadow (всего исправлений: 1)
Ответ на: комментарий от Shadow

Ну например ты слушаешь все через глобальный хендлер на делегатах, и форвардишь событие через цепочку промисов. А в имплементации промисов какая-то козлина заюзала setTimeout. И вот к тебе в конечную точку приезжает событие в качестве параметра, но внутри у него все превратилось в тыкву.

Vit ★★★★★
()
Ответ на: комментарий от Shadow

Локалсторадж не прокатит, там лимит 2 мегабайта. Можешь тут выдрать websql и indexeddb https://github.com/nodeca/bag.js или целиком заюзать. Но на старых андроидах все равно будет жопа.

Насчет связанного с ангуляром ничего не посоветую - не пользуюсь.

Vit ★★★★★
()
Ответ на: комментарий от Vit

Мне как раз нужны только данные, картинка аплоадится отдельно. Уже переделал.

Всё равно не могу избавиться от ощущения, что UI на JS - это костыль на костыле...

Я ангуляр взял только потому, что на старых андроидах angular ui был самым неглючным и быстрым ui с аккордеонами и прочими излишествами.

Shadow ★★★★★
() автор топика
Последнее исправление: Shadow (всего исправлений: 1)
Ответ на: комментарий от Vit

Не, у меня всё тёплое и ламповое, AJAX на алгоритме обычного сайта из 90-х.

Shadow ★★★★★
() автор топика
Ответ на: комментарий от Shadow

Да пёс его знает. Альтернативы не сильно лучше :)

Vit ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.