我在 html/jQM 中构建了一个测试页面。它只是一个 html 文件。我用 phonegap-build 构建了一个 .apk 来在我的 Galaxy s4 (4.2.2) 上测试它。
我的问题是,第一页转换没有显示。我选择哪种过渡(滑动、弹出、淡入淡出、翻转……)并不重要。始终不存在第一个过渡。
我尝试了 href="#blabla" 和 changePage("#blabla")。
如果我更改页面(未显示过渡),请返回并再次更改页面,过渡就在那里。只是第一次总是错过。
所有其他页面转换都有效。
有任何想法吗?
这是代码:
<!DOCTYPE html>
<html>
<head>
<title>Page Title</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="http://code.jquery.com/mobile/1.2.0/jquery.mobile-1.2.0.min.css" />
<script src="http://code.jquery.com/jquery-1.8.2.min.js"></script>
<script src="http://code.jquery.com/mobile/1.2.0/jquery.mobile-1.2.0.min.js"></script>
<script src="java.js"></script>
</head>
<body>
<div data-role="page" id="index">
<div data-role="header">
<h1>Index</h1>
</div><!-- /header -->
<div data-role="content">
<ul data-role = "listview" id="index_list">
<!-- Liste wird mit jQuery gefüllt! -->
</ul>
</div><!-- /content -->
<div data-role="footer">
<h4>Page Footer</h4>
</div><!-- /footer -->
</div><!-- /page -->
<div data-role="page" id="page2">
<div data-role="header">
<h1>Index</h1>
</div><!-- /header -->
<div data-role="content">
<ul data-role = "listview" id="page2_list">
<!-- Liste wird mit jQuery gefüllt! -->
</ul>
</div><!-- /content -->
<div data-role="footer">
<h4>Page Footer</h4>
</div><!-- /footer -->
</div><!-- /page -->
<div data-role="page" id="page3">
<div data-role="header">
<h1>Index</h1>
</div><!-- /header -->
<div data-role="content">
<ul data-role = "listview" id="page3_list">
<!-- Liste wird mit jQuery gefüllt! -->
</ul>
</div><!-- /content -->
<div data-role="footer">
<h4>Page Footer</h4>
</div><!-- /footer -->
</div><!-- /page -->
<div data-role="page" id="page4">
<div data-role="header">
<h1>Index</h1>
</div><!-- /header -->
<div data-role="content">
<ul data-role = "listview" id="page4_list">
<!-- Liste wird mit jQuery gefüllt! -->
</ul>
</div><!-- /content -->
<div data-role="footer">
<h4>Page Footer</h4>
</div><!-- /footer -->
</div><!-- /page -->
<div data-role="page" id="index2">
<div data-role="header">
<h1>Index</h1>
</div><!-- /header -->
<div data-role="content">
<ul data-role = "listview" id="index2_list">
<li>Hallo</li>
<li>Velo</li>
</ul>
</div><!-- /content -->
<div data-role="footer">
<h4>Page Footer</h4>
</div><!-- /footer -->
</div><!-- /page -->
<div data-role="page" id="index3">
<div data-role="header">
<h1>Index</h1>
</div><!-- /header -->
<div data-role="content">
<ul data-role = "listview" id="index3_list">
<li>Hallo3</li>
<li>Velo3</li>
</ul>
</div><!-- /content -->
<div data-role="footer">
<h4>Page Footer</h4>
</div><!-- /footer -->
</div><!-- /page -->
<script type="text/javascript">
$(document).ready(function() {
//var output = $('#output');
$.ajax({
//url: 'http://localhost/jsontest/lcl_request_grp.php',
url: 'XXX',
dataType: 'jsonp',
data: 'data',
jsonp: 'jsoncallback',
timeout: 5000,
success: function(data, status){
var html = '';
var list = [];
$.each(data, function(i,item){
//Alle Werte in einen Array Schreiben
//i beginnt bei 0
list[i] = [];
list[i]={};
list[i]['grp_id'] = item.grp_id;
list[i]['bezeichnung_de'] = item.bezeichnung_de;
list[i]['parent'] = item.parent;
list[i]['end'] = item.end;
list[i]['bezeichnung_fr'] = item.bezeichnung_fr;
list[i]['bezeichnung_en'] = item.bezeichnung_en;
//Die Werte die als parent 0 haben, in die Liste schreiben
if (item.parent == 0) {
html += '<li id="' + item.grp_id + '" parent = "' + item.parent +'"><a href="#" id="' + item.grp_id + '">' + item.bezeichnung_de + '</a></li>';
}
});
$('#index_list').append($(html));
$('#index_list').trigger('create');
$('#index_list').listview('refresh');
// Daten im LocalStorage als JSON-String speichern
localStorage.setItem("list", JSON.stringify(list));
},
error: function(){
window.alert("error!")
}
});
$('#index_list').on('click', 'li', function() {
var eintragid = $(this).attr('id');
p_changepage(eintragid, "#page2", "#page2_list");
});
$( "#index" ).on( "swiperight", function() {
$.mobile.changePage( "#index3", {
transition: "slide",
reverse: true,
});
});
$( "#index" ).on( "swipeleft", function() {
$.mobile.changePage( "#index2", {
transition: "slide",
reverse: false,
});
});
$( "#index2" ).on( "swiperight", function() {
$.mobile.changePage( "#index", {
transition: "slide",
reverse: true,
});
});
$( "#index2" ).on( "swipeleft", function() {
$.mobile.changePage( "#index3", {
transition: "slide",
reverse: false,
});
});
$( "#index3" ).on( "swipeleft", function() {
$.mobile.changePage( "#index", {
transition: "slide",
reverse: false,
});
});
$( "#index3" ).on( "swiperight", function() {
$.mobile.changePage( "#index2", {
transition: "slide",
reverse: true,
});
});
$('#page2_list').on('click', 'li', function() {
var eintragid = $(this).attr('id');
p_changepage(eintragid, "#page3", "#page3_list");
});
$('#page3_list').on('click', 'li', function() {
var eintragid = $(this).attr('id');
p_changepage(eintragid, "#page4", "#page4_list");
});
});
</script>
</body>
</html>
和外部的“java.js”:
function p_changepage (eintragid, topage, tolist) {
alert(window.location.pathname);
var data = JSON.parse(localStorage.getItem("list"));
var html = '';
$.each(data, function(i, item) {
if (item.parent == eintragid) {
html += '<li id="' + item.grp_id + '" parent = "' + item.parent +'"><a href="#" id="' + item.grp_id + '">' + item.bezeichnung_de + '</a></li>';
}
});
$(tolist).empty();
$(tolist).append($(html));
$(tolist).trigger('create');
$.mobile.changePage( topage, {
transition: "slide",
reverse: false,
});
$(tolist).listview('refresh');
}