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");
});

但它总是先显示第 1 页,然后转到第 2 页。我想直接打开page2怎么办?

4

1 回答 1

1

所以,我认为你在这里使用了错误的事件。从jqm 事件

**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 回答