Подтвердить что ты не робот

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

и мое предупреждение показывает undefined. Я также попытался изменить $.mobile.activePage на $.mobile.activePage.attr("id"), но это не сработало.

4b9b3361

Ответ 2

Попробуйте использовать

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

Я сделал для вас рабочий jsfiddle http://jsfiddle.net/Z5Uze/1/

Ответ 3

Я понимаю, что это старый поток, так что это, вероятно, более недавнее дополнение.

Вы пробовали:

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*/ }

Ответ 4

Попробуйте, это работает для меня:

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

Вот скрипт с предупреждением, которое работает: http://jsfiddle.net/9XThY/3/

Ответ 5

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

});

Ответ 6

Мы делаем это:

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

Ответ 7

JQuery Mobile 1.4.3 дружественный...

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

    alert(URL);
});

Ответ 8

Оба этих решения хороши, но мне нужно было поместить его внутрь document.ready(function()

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