0

私のアプリの構造は次のようになります:

index.html / app. エントリ ポイントには、<head>...</head>開いているページとトリガーされるイベントに応じてカスタム スクリプトを実行する 1 つの中央 JS が含まれます: mylist.html というページの簡単な例を次に示します。<head>of インデックスにロードするのに 1 回しか必要としない、より大きな JS :

$(document).on('pageinit', '#pageMyList', function()        
{
     // init code   
});

$(document).on('pageshow', '#pageMyList', function()
{   
    // run every time
});     

JQM ajaxなどをシャットダウンすることはオプションではありません。これらの遷移が必要で、jqmを「ネイティブ」にするためです。

問題:

すべてブラウザで処理されるpdf、doc、外部リンクなどのリストがあります。例:PDFを開くと、それにリンクするだけです(window.location = 'pathToPdfFile';

それは機能しますが、pdfリーダーが開かれます(iphoneなど)。戻ると最後のページが開きますが、 index.html ページはもう DOM にありません。JS 全体が利用できません。

ところで: ページは ajax を介して動的に構築されます。任意のページ (index.html) を更新すると、同じようなことが起こります。

4

1 に答える 1

0

どのページを DOM にロードするかを JQM に具体的に伝えることができますが (ページの下部にあるJQM ドキュメントを参照)、DOM にロードしすぎると、デバイス固有のメモリの問題が発生するので注意してください。

特定のページをキャッシュするには、 data-dom-cache="true" 属性をページのコンテナー (たとえば、index.htmlページ)に追加できます。

<div data-role="page" data-dom-cache="true">

以前にアクセスしたすべてのページを DOM に保持するには、次のように、jQuery をロードした後、jQuery モバイルをロードする前に、という別の JS ファイルでページ プラグインの domCache オプションを true に設定します。

$.mobile.page.prototype.options.domCache = true;

または、指定したすべてのファイルをキャッシュに保存する HTML5 キャッシュ マニフェスト ファイルを作成することもできます。これにより、アプリはオフラインでも動作します。この方法には欠点がありますが、アプリをどのように機能させたいかによって異なります。HTML5 キャッシュ マニフェストとハウツーに関するドキュメントは次のとおりです: http://www.html5rocks.com/en/tutorials/appcache/beginner/

于 2012-07-25T14:44:03.973 に答える