Как обрабатывать ошибки смены страниц в jQuery Mobile - PullRequest
6 голосов
/ 20 сентября 2011

Я пишу мобильное приложение jQuery, которое требует аутентификации пользователя. Один и тот же пользователь не может открыть свой сеанс из нескольких мест: если пользователь входит в другой браузер, предыдущий сеанс помечается как мертвый.

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

Ответы [ 4 ]

3 голосов
/ 06 апреля 2012

Как насчет события

pagechangefailed

?

Он запускается при сбое загрузки страницы, что, похоже, имеет место.

Подробнее о http://jquerymobile.com/test/docs/api/events.html

2 голосов
/ 20 сентября 2011

Связанный:

Вы можете использовать что-то вроде

pagebeforeshow

Запускается на отображаемой странице до начала ее перехода.

Пример (псевдокод):

$('#pageId').live('pagebeforeshow',function(event, ui){
    // check session here
    if(!$session) {
        // redirect to login
        $.mobile.changePage('#login');
    }
});
1 голос
/ 22 сентября 2011

В итоге я разбудил jQuery Mobile и добавил возможность добавлять собственный обработчик ошибок: https://github.com/jquery/jquery-mobile/pull/2504 Я думаю, что это превосходит другие предложения, потому что он не добавляет никаких накладных расходов, кроме случаев, когда ошибка действительно возникает.

ОБНОВЛЕНИЕ: в jQuery Mobile RC1 будет новое событие загрузки страниц. Это решит эту проблему элегантно и в соответствии со стандартами проекта.

0 голосов
/ 20 сентября 2011
$(a).click(function(){
    // check for session?
});
...