web-dev-qa-db-fra.com

jQuery Mobile obtenir la page actuelle

J'utilise jQuery Mobile 1.1.1 et Apache Cordova 2.0.0. Je souhaite que mon application se ferme lorsque j'appuie sur le bouton Précédent, mais uniquement si la page actuelle a ID = feedZive J'utilise le code suivant pour le faire:

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

    }
};

Cependant, il semble que je ne puisse pas obtenir la page en cours car j'ai essayé le code suivant:

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

et mon alerte montre indéfini. J'ai aussi essayé de changer $.mobile.activePage en $.mobile.activePage.attr("id") mais cela n'a pas fonctionné.

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

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

46
howbizarre

Essayez d'utiliser 

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

J'ai fait un jsfiddle de travail pour vous http://jsfiddle.net/Z5Uze/1/

18
Hessius

Je réalise que c'est un vieux fil, donc c'est probablement un ajout plus récent.

As-tu essayé:

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

ou d'une autre manière:

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

Essayez ceci, ça marche pour moi:

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

Voici un Fiddle avec une alerte qui fonctionne: http://jsfiddle.net/9XThY/3/

6
mornaner
$(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);

});

3
Arun Babu

Nous faisons ceci:

$(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;
    }
});

Et la navigation fonctionne comme ceci:

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

Jquery mobile 1.4.3 convivial ...

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

    alert(URL);
});
0
Carter Medlin