jQuery Mobile pageinit не работает на страницах первой загрузки (реплицируется)

Перезагрузка страницы или переход непосредственно к URL-адресу хэша jQuery Mobile не запускает pageinit ни разу. Например, я пробовал это на своей вторичной странице:

    $(function () {
        $(page).bind('pageinit', function () {
            console.log('bind pageinit');
        });
        $(document).on('pagecreate', page, function () {
            console.log('pagecreate');
        });
        $(document).on('pageshow', page, function () {
            console.log('pageshow');
        });
        $(document).on('pageinit', page, function () {
            console.log('pageinit');
        });
    });

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

У меня есть живой пример: http://dl.dropbox.com/u/5986646/jqm-pageinit.html. Вставьте это в URL-адрес, и события не будут запускаться: http://dl.dropbox.com/u/5986646/jqm-pageinit.html#two (обратите внимание на хеш-URL).


person Basem    schedule 27.08.2012    source источник
comment
Если я оставлю функцию готовности документа, она будет работать! Это проблема?   -  person Basem    schedule 27.08.2012


Ответы (1)


Да, у меня была такая же проблема.

Для выполнения некоторого кода javascript на странице инициализации используйте эту структуру:

$(document).bind("mobileinit", function(){
    $('#mainPage').live('pageshow', function(){
        // Some Javascript code
    });
});

Теперь я могу выполнять код все время, пока вызывалась страница.

person Víctor Dueñas Robles    schedule 27.08.2012