jQuery Mobile获取当前页面

时间:2012-09-17 14:11:17

标签: javascript cordova jquery-mobile

我正在使用jQuery Mobile 1.1.1和Apache Cordova 2.0.0。当我按下后退按钮时,我希望我的应用程序退出,但仅当当前页面具有ID = feedZive时。我正在使用以下代码来执行此操作:

function onDeviceReady(){
    document.addEventListener("backbutton", onBackKeyDown, false);
    function onBackKeyDown(){
        if ($.mobile.activePage.is("#feedZive")){
            navigator.app.exitApp();
        }
        else{
            navigator.app.backHistory();
        }

    }
};

然而,看起来我无法获取当前页面,因为我尝试了以下代码:

var activePage = $.mobile.activePage;
alert(activePage);

我的警报显示未定义。我还尝试将$.mobile.activePage更改为$.mobile.activePage.attr("id"),但它无效。

8 个答案:

答案 0 :(得分:46)

$(document).live('pagebeforeshow', function() {
    alert($.mobile.activePage.attr('id'));
});​

http://jsfiddle.net/ajD6w/5/

答案 1 :(得分:18)

尝试使用

var activePage = $.mobile.activePage.attr("id");

我为你做了一个工作jsfiddle http://jsfiddle.net/Z5Uze/1/

答案 2 :(得分:11)

我意识到这是一个旧线程,所以这可能是最近的补充。

你试过了吗?

var activePage = $.mobile.pageContainer.pagecontainer("getActivePage");
if(activepage[0].id == yourpageid)
{ /*do something here*/ }

或其他方式:

var activePage = $.mobile.activePage.attr('id')
if(activepage == yourpageid)
{ /*do something here*/ }

答案 3 :(得分:6)

试试这个,它为我工作:

var activePage = $.mobile.activePage[0].id;

这是一个小提琴,其中有一个有效的提醒:http://jsfiddle.net/9XThY/3/

答案 4 :(得分:3)

$(document).ready(function() {

//exit when back button pressed on home screen
document.addEventListener("deviceready", function() {
    document.addEventListener("backbutton", function() {
        if ($.mobile.activePage.attr('id') == "home") {
            navigator.app.exitApp();
        } else {
            navigator.app.backHistory();
        }
    }, false);
}, false);

});

答案 5 :(得分:2)

我们这样做:

$(document).on("pagecontainershow", function() {
    var activePage = $.mobile.pageContainer.pagecontainer("getActivePage");

    var activePageId = activePage[0].id;

    if(activePageId != 'splashPage') { //fix rotation splash flash bug
        $("#splashPage").hide();
    } else {
        $("#splashPage").show();
    }

    switch(activePageId) {
        case 'loginPage':
            loginPageShow();
            break;
        case 'notificationPage':
            notificationPageShow();
            break;
        case 'postPage':
            postPageShow();
            break;
        case 'profilePage':
            profilePageShow();
            break;
        case 'splashPage':
            splashPageShow();
            break;
        case 'timelinePage':
            timelinePageShow();
            break;
        default:
            break;
    }
});

导航的工作原理如下:

    $.mobile.loading('hide');
    $(":mobile-pagecontainer").pagecontainer("change", "#timelinePage", {
        transition: 'none'
    });

答案 6 :(得分:0)

Jquery mobile 1.4.3友好...

$(document).on('pagebeforeshow', function () {
    var URL = $.mobile.path.parseUrl(window.location).toString().toLowerCase();

    alert(URL);
});

答案 7 :(得分:-2)

这两个解决方案都很好,但我需要把它放在document.ready(function()

$(document).ready(function(){
var activePage = $.mobile.activePage[0].id;
alert(activePage);
});