Конфликт window.location с jQuery Mobile

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

Ядро моего приложения выглядит как правильное приложение для iPhone с панелью вкладок. На одном из моих экранов, если щелкнуть ссылки на панели вкладок, перед перенаправлением мы должны сделать запрос POST на сервер, а затем выполнить перенаправление в случае успеха.

В настольном браузере это работает именно так, как ожидалось.

В Mobile Safari вообще не работает. Запрос POST происходит, а перенаправление нет. Я пробовал несколько различных методов перенаправления, и ни один из них не изменил ситуацию.

Я использую jQuery Mobile, но поскольку мне нужно перенаправить на совершенно другую страницу без перехода и без AJAX, я использую для перенаправления window.location.href.

У кого-нибудь есть идеи, почему это может происходить? С удовольствием предоставлю дополнительную информацию, если это необходимо, я 2 дня бился об этом головой.


person Steve Hill    schedule 18.05.2012    source источник
comment
Вы пробовали использовать $.mobile.changePage? Вы можете установить reloadPage для принудительной полной перезагрузки, а также отключить переходы. Я не уверен, почему установка window.location.href не сработает; Я просто предлагаю обходной путь. Также этот вопрос кажется актуальным - stackoverflow.com/questions/8153236/jquery-mobile-changepage .   -  person TJ VanToll    schedule 18.05.2012
comment
$.mobile.changePage не работал — даже с установленным reloadPage. Похоже, что jQuery Mobile переписал все URL-адреса моих страниц как «#» — вот почему они никуда не делись!   -  person Steve Hill    schedule 21.05.2012


Ответы (1)


Итак, проблема здесь заключалась в изменении поведения между запуском моего приложения в настольном браузере и его запуском в Mobile Safari.

На десктопе jQuery Mobile в основном предоставлял не более чем стили и переходы.

В Mobile Safari он переписывал все URL-адреса на моей странице. Из-за того, что отлаживать веб-сайты прямо на телефоне или в симуляторе было так сложно (я знаю о консоли отладки, но она была лишь незначительной), мне потребовалось много времени, чтобы понять это.

Я решил эту проблему, добавив атрибут data-url к каждой из моих ссылок — это было не переписано jQuery Mobile, поэтому я смог использовать его, чтобы направить пользователя туда, куда он должен был перейти. с самого начала.

Я не смог найти никаких упоминаний о том, что jQuery Mobile переписывал URL, но, возможно, я что-то упустил в их документации.

person Steve Hill    schedule 22.05.2012