1

アプリケーションでphonegap(1.8.1)とjquerymobile(1.1.0)を一緒に使用しています

次に、index.htmlページを開いてアプリケーションを開きます。私のindex.htmlには次のようなページがたくさん含まれています

<div data-role="page" id="page1">
<div data-role="page" id="page2">
<div data-role="page" id="page3">
<div data-role="page" id="page4">

私が持っている旗に応じてページを開く必要があります。現在、page1はデフォルトで開きます。しかし、アプリケーションが開いたらすぐにpage2を開きたいとしたら、次のchangePage()ようpagebeforeshowにします。

$("#page1").on("pagebeforeshow", function(e) {
$.mobile.changePage("#page2");
});

ただし、常に最初にpage1が表示され、次にpage2に移動します。page2を直接開きたい方法は?

4

1 に答える 1

1

したがって、ここで間違ったイベントを使用していると思います。jqm-eventsから:

**pagebeforeshow**
Triggered on the "toPage" we are transitioning to, before the actual transition  
animation is kicked off. Callbacks for this event will recieve a data object
as their 2nd arg.  


 **pagebeforeload**

Triggered before any load request is made. Callbacks bound to this event can call  
preventDefault() on the event to indicate that they are handling the load request.  
 Callbacks that do this *MUST* make sure they call resolve() or reject() on the   
deferred object reference contained in the data object passed to the callback.

したがって、pagebeforeloadは、ページを LOADING する前に実行されるため、ページを切り替えるために使用する必要があるデフォルトのイベントであり、表示されません。

pagebeforeshowの主な問題は、このイベントがトリガーされたときに、ページが既に読み込まれており、表示する準備ができていることです。このイベント内で changePage() を呼び出すと、現在表示されているページの後に表示される新しいページへのページ遷移のみがキューに入れられます。おそらく、このイベントと jqm サイトで説明されている「preventDefault()」テクニックを使用すると、必要な動作が得られる可能性がありますが、これを試したことがないため、これ以上お手伝いできません。幸運を。

編集:OPがコメントで述べたように、問題はjqmのデフォルトの移行でした。新しいページが読み込まれると、自動スライド トランジションがトリガーされるため、最初のページが表示されてから、changePage() で呼び出されたページにトランジションされます。解決策は、次のような移行を回避することです。

$.mobile.changePage('#page', {transition:'none'}); 

するといきなり目的のページが表示されます。

于 2012-06-21T08:16:02.560 に答える