В моем приложении jquery-mobile (1.0RC2) у меня есть две страницы: test1.html, test2.html
Первая страница, test1.html, включает в себя набор для складывания, где я раскрываю один элемент, который можно сверять, с помощью скрипта в прослушивателе событий pageinit (пробовал как pagehow, так и pageinit):
$('#page1').live( 'pageinit', initPage);
function initPage() {
alert('initPage!'); // this line seems to be always getting executed
$('#my_expandable').trigger('expand'); // ... but this line doesn't when coming back via a back link!
}
Это отлично работает при первом вызове страницы.
Тогда у меня есть ссылка, которая ведет меня на вторую страницу test2.html, а именно:
<script>
function goPage2(criteria) {
$('#page1').die( 'pageinit', initPage);
$.mobile.changePage( "test2.html", {reverse: false, reloadPage: true} );
}
</script>
<a href="javascript:goPage2('brand');" rel="external" class="ui-link-inherit" style="margin-top:0px;padding-top:0px;margin-bottom:0px;padding-bottom:0px;">page 2</a>
Когда я возвращаюсь на первую страницу через
<script>
function goPage1() {
$.mobile.changePage( "test1.html", { reverse: true, reloadPage: true} );
}
</script>
<a href="javascript:goPage1();" rel="external" class="ui-link-inherit">test</a>
выполняется только предупреждающее сообщение в прослушивателе событий pageinit test1.html, но разборная часть не раскрывается через
Вы можете увидеть образец в действии здесь: http://bit.ly/rr0dq3
Как воспроизвести проблему:
- загрузить test1.html в http://bit.ly/rr0dq3
- вы получите предупреждающее сообщение, и складная будет развернута
- нажмите на кнопку «Перейти на страницу2» и вы попадете на вторую страницу test2.html
- на этой второй странице, нажмите на серую кнопку 'test', и вы вернетесь на первую страницу test1.html
- проблема сейчас: как вы можете видеть, команда оповещения о событии pageinit в test1.html выполняется, но расширение свертываемого не - почему бы и нет? Очевидно, что метод прослушивателя событий pageinit вводится правильно, но, похоже, здесь проблема только в сворачиваемом.
Я думаю, что это может быть ошибка (подал отчет здесь https://github.com/jquery/jquery-mobile/issues/2791),, но, возможно, у кого-то есть идея для этого.
Обход:
И оповещение, и раскрывающееся раскрытие выполняются, когда я использую другой способ открыть вторую страницу test2.html, используя
window.location.href = "test2.html";
вместо
changePage(...);
Но это не очень приятно. Почему это не работает должным образом, если я использую способ вставки страницы? Я уже вызываю метод die (), когда открываю разные страницы, чтобы не зависать несколько слушателей событий pageinit.