События страницы jQueryMobile не запускаются при переходе на другую HTML-страницу - PullRequest
3 голосов
/ 11 ноября 2011

Я пытаюсь перейти на другую страницу .html, используя

$.mobile.changePage( "PlayGame.html", { transition: "slideup"}, true, true)

. Переход на PlayGame.html выполняется, однако ни одно из следующих действий не выполняется:

$(document).bind("mobileinit", function()
{
alert(1);
});

$('#gamePage').live('pageinit',function(event, ui)
{
    alert('pageinit');  
});

$('#gamePage').live('pagebeforeshow',function(event, ui)
{
    alert('booooo');
});

Однако, если я сделаю window.location.href = "PlayGame.html", то все сработает соответственно.

Чего мне не хватает?

Спасибо

Том

1 Ответ

20 голосов
/ 11 ноября 2011

Если код в вашем примере находится в <head> документа PlayGame.html, он не будет включен, когда каркас jQuery Mobile захватит страницу через AJAX.Вот почему ваш пользовательский код запускается, когда вы загружаете всю страницу, а не при нажатии на ссылку с другой страницы.

Вам нужно либо поместить свой пользовательский JavaScript в один файл и включить его на каждой странице (поэтому он будет доступен независимо от того, с какой страницы пользователь заходит на ваш сайт), или вы захотите переместить пользовательский JavaScript-код для каждой страницы в элемент <div data-role="page"> для каждой страницы (поэтому он будет включен при перетаскивании страницы вDOM).

Причина в том, что когда вы нажимаете ссылку на внешний файл, jQuery Mobile использует AJAX для извлечения первого экземпляра элемента <div data-role="page"> и помещает этот элемент в текущий DOM, всеостальное в документе отбрасывается.

Вот некоторые рекомендуемые материалы о том, как работает навигация jQuery Mobile: http://jquerymobile.com/demos/1.0rc2/docs/pages/page-navmodel.html

...