jQuery Mobile - Verwijder de knop Terug alleen wanneer u naar een bepaalde pagina verwijst

Ik heb een mobiele web-app met een inlogscherm. Na het inloggen gaat de gebruiker naar het startscherm van de app. Omdat ik back-buttons heb ingeschakeld voor de hele applicatie, verschijnt de knop Terug op het startscherm; Als u nu op 'Terug' drukt, gaat de gebruiker terug naar de inlogpagina (wat ik niet wil). Tegelijkertijd moet het startscherm een ​​"Terug" -knop hebben, omdat de gebruiker mogelijk via een ander scherm in de app op het startscherm komt en mogelijk terug wil gaan.

Dus eigenlijk is er een eenvoudige manier om de terugknop uit te schakelen als het naar het inlogscherm gaat, maar niet als het ergens anders heen gaat?

1
Ik denk dat het een betere benadering is om de gebruiker automatisch naar de startpagina of standaardpagina om te leiden als hij al is ingelogd
toegevoegd de auteur Andre, de bron
Dat doe ik al. Maar het is beter om de gebruiker niet de mogelijkheid te geven terug te gaan naar de login als hij toch wordt doorgestuurd. Bespaart tijd, aanvragen etc.
toegevoegd de auteur Jay, de bron

3 antwoord

Een andere strategie die u zou kunnen overwegen is om de inlogpagina een parameter toe te voegen aan de querystring van de startpagina om aan te geven dat terug moet worden uitgeschakeld.

http://myapp.com/page.html?backDisable=true

Binnen uw pagina kon een eenvoudige Javascript-oproep bepalen of de parameter werd doorgegeven en zo ja, de knop Terug uitschakelen. Hier is een voorbeeld met de URL-parserinvoegtoepassing .

if ($.url().param('backDisable') === 'true') {
  $('#backButton')[0].disabled = true;
}
0
toegevoegd
jQuery Mobile heeft ook enkele methoden voor het parseren van URL's (zoals $. mobile.path.parseUrl ): jquerymobile.com/demos/1.0rc2/docs/api/methods.html
toegevoegd de auteur Jasper, de bron

Hoe zit het met het instellen van een reeks bezochte pagina's en controleer deze om te zien of de laatste pagina de inlogpagina was:

//setup array of page views
var page_views = [];
//add event handler for `pageshow` event
$('[data-role="page"]').live('pageshow', function() {
    //add current page to page_views array
    page_views.push(this.id);
    var page_views_length = page_views.length;
    //check if the current page is the homescreen and if the last page was the login page
    if (this.id == 'homescreen_id' && page_views_length > 1 && page_views[(page_views_length - 2)] == 'login_id') {//this assumes your login page has the id of `login_id` and your homescreen page has the id of `homescreen_id`
        //run code to hide the back button
    }
});
0
toegevoegd
Heeft dit gedaan, behalve dat ik alleen de laatste pagina opsla, in plaats van een array met de paginageschiedenis. Alleen de vorige pagina is van belang
toegevoegd de auteur Jay, de bron

Voeg data-ajax = "false" toe aan uw inlogformulier. Ik neem aan dat uw aanmeldingsformulier en startscherm zich op hetzelfde domein bevinden.

Dus wanneer u naar example.com gaat, ziet u het aanmeldingsformulier (indien niet ingelogd) ... wanneer u naar example.com gaat, ziet u een welkomstscherm ...

PHP-voorbeeld van mijn indexlayout ... (dirty):

<div data-role="page">
<?php if ($notloggedin) { ?>
    <form method="post" action="<?= $this->baseUrl('/'); ?>" id="login-form" data-ajax="false">...form...</form>
<?php } else { ?>
    YOUR PAGE
<?php } ?>
</div>

jQuery mobiele paginalinks

0
toegevoegd