2013-03-22 97 views
2

我正在开发一个Windows Phone的应用程序。除了(设备的)后退按钮,应用程序本身工作正常。后退按钮可以正确导航回到某个停止位置。此时它显示了AJAX加载器。如果后退按钮再次被按下,应用程序将关闭。Phonegap + jQuery的手机+ Windows手机:后退按钮问题

我的应用程序的结构如下(我使用的是一个多页的结构):

应用负载 - >用户挑选语言 - >主屏幕按钮

其他页面在主屏幕上,用户可以进一步浏览应用程序。后退按钮正常工作,直到主屏幕再次显示。

这里的主屏幕看起来像一个例子:

<div data-role="page" id="zero"> 
    <div data-role="content"> 
    <a href="#one" data-role="button" id="button-one" data-icon="plus">button-one</a> 
    <a href="#two" data-role="button" id="button-two" data-icon="plus">button-two</a> 
    <a href="#three" data-role="button" id="button-three" data-icon="plus">button-three</a> 
    <a href="javascript:randomFunction();" data-role="button" id="button-four" data-icon="plus">button-four</a> 
    </div> 
</div> 

我使用激活一个JavaScript函数的几个按钮。在这些功能的最后,我使用$.mobile.changePage("#four");导航到页面。

所有的按钮都能正常工作,但是当返回到主屏幕时,它会停止并显示AJAX加载器。

也许一些有用的信息 - 我的设备准备函数如下所示:

*如果localStorage的包含了语言的值,设置语言,并导航到主屏幕。

*如果localstorage不包含该语言的值,请导航到用户可以选择语言的页面。

注意:在用户可以选择语言的页面按下后退按钮时,应用程序关闭(正常),之后,用户将被导航到主屏幕。如果后退按钮在这里按下,应用程序也会关闭。我觉得这有点奇怪,因为我认为它必须回到语言选项页面。

回答

3

我不知道你使用的Windows Phone版本是什么,但我遇到了WP 8.1的一些后退按钮问题。 cordova back button事件似乎不起作用。我为Windows Phone制作了一个自定义后退按钮实现。

WinJS.Application.addEventListener("backclick", function (evt) { 
    if (!jQuery.mobile.activePage.is("#mainPage")) { 
     history.back(); 
     // Prevent the default behavior by returning true. evt.preventDefault doesn't cancel the external code. 
     return true; 
    } 
    // Execute the default behavior. 
    return false; 
};