JQuery Mobile: запустить метод javascript на новой странице - PullRequest
1 голос
/ 09 июня 2011

У меня есть приложение, которое позволяет пользователям выигрывать призы.Чтобы выиграть приз, им нужно попасть на страницу, подобную этой: www.myUrl.com#isAWinner, где #isAWinner - моя мобильная страница.Я обеспокоен тем, что кто-то подумает о том, чтобы просто ввести этот URL-адрес и перейти непосредственно на страницу победителя без фактического выигрыша.Чтобы исправить это, я попытался сделать это:

<!-- Show this if the user is a winner -->
<div id = "isAWinner" data-role = "page">
    <p>YOU WIN!!!</p>
    <!-- Invisible link -->
    <a href = "#beforeLogin" id = "goBack" class = "InvisibleLinks"></a>
    <!-- Ensures that the user does not just enter #isAWinner to the end of the URL -->
    <script type="text/javascript"> reallyAWinner()</script>
</div>

function reallyAWinner () {
    alert(isAWinner);
    //Check to see if they really are a winner
    if (isAWinner == false) {
        //Not really a winner. Send back to login
        $('#goBack').click();
    }
}

Проблема заключается в том, что alert попадает при первоначальной загрузке страницы, но если я пытаюсь перейти по этому URL после слов, то метод неударить снова.

Не понимаю, как работает JQuery mobile?Будет ли он попадать в этот метод reallyAWinner() только при загрузке всей страницы HTML, а не при загрузке страницы isAWinner?Если да, есть ли другой способ проверить, действительно ли пользователь является победителем, только при загрузке страницы isAWinner?

Изменить : здесь немного больше информации.Когда я вхожу в метод изначально без загрузки первой страницы, предупреждение в reallyAWinner() сработает до того, как у меня появится предупреждение в моем методе document.ready, в результате чего $('#goBack').click(); не будет работать (так как мобильный телефон не загружен)

1 Ответ

9 голосов
/ 09 июня 2011

Если вы включили вызов ajax-метода, функция realAWinner () будет вызываться при вызове вашей начальной страницы.

Что вы можете сделать для того, чтобы вызывать функцию functionAAWinner (), только когда загружена страница #isAWinner, вы можете зарегистрировать событие "pageshow" для идентификатора вашей страницы.

Таким образом, вы можете сделать следующее:

$('#isAWinner').live('pageshow', function () { reallyAWinner();  });

Из документации jQueryMobile:

pageshow: Triggered on the page being shown, after its transition completes.
...