#javascript #jquery #html #jquery-mobile #mobile-website
#javascript #jquery #HTML #jquery-mobile #мобильный-веб-сайт
Вопрос:
У меня есть приложение, которое позволяет пользователям выигрывать призы. Чтобы выиграть приз, им нужно перейти на страницу, подобную этой: 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 afterwords, то метод больше не отображается.
Я не понимаю, как работает jQuery mobile? Попадет ли он в этот reallyAWinner()
метод только при загрузке всей HTML-страницы, а не при загрузке isAWinner
страницы? Если да, то есть ли другой способ, которым я могу проверить, действительно ли пользователь является победителем, только при загрузке isAWinner
страницы?
Редактировать: вот немного больше информации. Когда я изначально ввожу метод без загрузки первой страницы, предупреждение в reallyAWinner()
будет срабатывать перед предупреждением, которое у меня есть в моем document.ready
методе, из-за чего $('#goBack').click();
не будет работать (потому что мобильное устройство не загружено)
Ответ №1:
Если вы включили вызовы метода ajax, функция reallyAWinner() будет вызвана при вызове вашей начальной страницы.
Что вы можете сделать, чтобы вызвать вашу функцию reallyAWinner() только при загрузке страницы #isAWinner вы можете зарегистрировать событие «pageshow» в идентификаторе вашей страницы.
Итак, вы можете сделать следующее:
$('#isAWinner').live('pageshow', function () { reallyAWinner(); });
Из документации jQueryMobile:
pageshow: Triggered on the page being shown, after its transition completes.
Комментарии:
1. Спасибо. Это заставило его загрузить метод при загрузке этой страницы. Еще один вопрос. Я отредактировал этот метод, чтобы он содержал это:
$.mobile.changePage('#beforeLogin');
гдеbeforeLogin
— идентификатор страницы, на которую я хочу их перенаправить. Когда метод выполняется, этот вызов не будет работать, но когда я копирую и вставляю эту строку в firebug, он действительно работает. Я что-то там упускаю?2. Я думаю, вам нужно написать $.mobile.changePage($(‘#beforeLogin’)) в качестве первого аргумента, который принимает changePage, — это страница jQuery.