Как избавиться от ошибки загрузки страницы с помощью jQuery mobile, когда компоненты сафари скрыты? - PullRequest
5 голосов
/ 15 марта 2011

Когда ваше мобильное веб-приложение добавлено на домашний экран iOS, и вы решили скрыть компоненты сафари с этим метатегом:

 <meta name="apple-mobile-web-app-capable" content="yes" />

Если на одной из ваших страниц произошла ошибка загрузки, jQuery mobile отображает сообщение об ошибке, и все ссылки на текущей странице не работают. Со скрытыми компонентами сафари нет возможности легко перезагрузить страницу. Вам нужно вернуться на домашний экран и снова открыть мобильное веб-приложение. Есть ли более элегантный способ восстановления после ошибки в этом сценарии? Есть ли способ принудительно перезагрузить страницу после того, как вы столкнулись с ошибкой загрузки страницы в мобильном jQuery?

Ответы [ 3 ]

2 голосов
/ 15 марта 2011

Забавная ситуация ...

На вашем месте я бы попытался реализовать привязку события .live(), которая вернулась бы в рабочее состояние, когда пользователь щелкнет всплывающее окно с ошибкой.

Используйте firebug, чтобы узнать, какие отличительные классы есть у всплывающего дива.

1 голос
/ 09 августа 2012

Вы можете обработать событие pageloadfailed и восстановить.Вот документация и пример кода: http://jquerymobile.com/test/docs/api/events.html

$( document ).bind( "pageloadfailed", function( event, data ){

    // Let the framework know we're going to handle things.

    event.preventDefault();

    // ... attempt to load some other page ...
    // at some point, either in this callback, or through
    // some other async means, call resolve, passing in
    // the following args, plus a jQuery collection object
    // containing the DOM element for the page.

    data.deferred.resolve( data.absUrl, data.options, page );

});
1 голос
/ 15 марта 2011

При возникновении ошибки вызовите window.location.reload(true), что приведет к повторной загрузке страницы, поскольку первый аргумент - true, а не просто перезагрузка из кэша.

Если вы считаете, что нене нужно запрашивать страницу, просто пропустите первый аргумент.

...