簡単な語彙ページを作成しています (現在、韓国語-英語用)。すべてのカードは localStorage に保存されます。以下のコードに示すように、複数のページ テンプレートで jQueryMobile を使用しています。
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Card Reader</title>
<link rel="stylesheet" href="jquery.mobile/jquery.mobile-1.1.0.css" />
<link rel="stylesheet" href="docs/assets/css/jqm-docs.css" />
<link rel="stylesheet" href="docsdemos-style-override.css" />
<script type="text/javascript" src="custom_codes.js"></script>
<script type="text/javascript" src="jquery.mobile/jquery-1.7.2.min"></script>
<script type="text/javascript" src="jquery.mobile/jquery.mobile-1.1.0.js"></script>
<script>
$('document').ready(function(){
var list = JSON.parse(localStorage.getItem('cardList'));
if(list==null){
populateCards();
list = JSON.parse(localStorage.getItem('cardList'));
}
$cardList=$('#cardList');
$cardList.empty();
$.each(list,function(i, value){
$newItem = $('<li />');
$link = $('<a data-transition="slidefade" href="#wordListPage">'+value+'</a>');
$link.attr('onClick',"loadWordList('"+value+"','wordList"+i+"')");
$newItem.append($link);
$cardList.append($newItem);
});
});
function loadWordList(cardName,cardId){
var wordList = JSON.parse(localStorage.getItem(cardId));
if(wordList==null){
alert('no words in the list');
return;
}
$wList=$('#wordList');
$wList.empty();
$list = $('<ul/>');
$list.attr('data-role','listview');
$.each(wordList,function(i, value){
$newItem = $('<li />');
$newItem.append('<h3>'+value['word']+'</h3>');
$newItem.append('<p>'+value['definition']+'</p>');
$list.append($newItem).trigger("create");
});
$wList.append($list).trigger('create');
$('#cardTitle').html(cardName);
}
</script>
</head>
<body>
<div data-role="page" id="welcomePage">
<h2>
Welcome to Korean Learner
</h2>
<a data-transition="slidefade" href="#cardsListPage">
Load Cards
</a>
</div>
<div data-role="page" id="cardsListPage">
<div data-role="content">
<ul id="cardList" data-role="listview">
</ul>
</div>
</div>
<div data-role="page" id="wordListPage">
<div data-role="header" class="ui-header ui-bar-b" data-position="fixed">
<a data-rel="back">Back</a>
<h1 id="cardTitle" >Card List</h1>
</div>
<div data-role="content" id="wordList">
</div>
</div>
</body>
</html>
これをブラウザで確認すると、出力フローは次の画像のようになります。
cardList と wordlist をロードするために JavaScript を使用しました。populateCards() 関数は、カードの配列を localstorage にロードするだけの custom_codes.js の関数です。私が今得ている唯一のエラーは、最初のロード (フローの 3 番目のショット) で CSS なしで wordList ページがロードされ、戻った後 (最後のショット) は完全に問題ないことです。誰でもこのエラーを修正するのを手伝ってくれますか? また、これを携帯電話で使用することをターゲットにしているため、パフォーマンスのヒントをいくつか得られることを嬉しく思います.