Siirry pääsisältöön

Navigation Blocking

Avaa ChatGPT:ssä

Navigoinnin estäminen lisää yhden tai useamman hallintakerroksen koko taustalla olevaan reititin-API:in. Jos estäviä käsittelijöitä on läsnä, navigointi estetään seuraavasti:

Jos navigointi laukaistaan jollain reitittimen tasolla kontrolloidulla toiminnolla, voit suorittaa minkä tahansa tehtävän tai näyttää käyttäjälle käyttöliittymäkyselyn vahvistaaksesi toiminnon. Jokainen komponentti, joka toteuttaa WillLeaveObserver reitinhierarkiassa, kutsutaan. Toteuttajan on kutsuttava accept jatkaakseen navigointia tai reject estääkseen sen. Jos useat komponentit toteuttavat WillLeaveObserver reitin puussa, estokäyttäjät suoritetaan järjestyksessä käänteisessä järjestyksessä.

Käytännön esimerkki estämisen käsittelystä

Näyttääksesi, kuinka estäminen toimii käytännössä, katso Käyttöliittymäelävaiheita esimerkkejä

Sivutapahtumissa, joita ei voida suoraan hallita, reititin ei sekoitu tai pakota tiettyä käyttäytymistä. Kehittäjät voivat silti kuunnella beforeunload -tapahtumaa viimeisenä yrityksenä varoittaa käyttäjää tallentamattomista tiedoista tarvittaessa.

PageEventOptions options = new PageEventOptions();
options.setCode("""
event.preventDefault();
return true;
""");
Page.getCurrent().addEventListener("beforeunload", e -> {}, options);

Selaimen takaisinpainike

Takaisinpainike toimii web-sovellusten kontrollin ulkopuolella, mikä tekee sen toiminnan katkaisemisesta haastavaa kaikissa selaimissa johdonmukaisesti. Sen sijaan, että yrittäisit estää takaisinpainiketta, on tehokkaampaa suunnitella käyttöliittymäsi/käyttäjäkokemuksesi siten, että sen vaikutusta vähennetään. Harkitse strategioita, kuten tallentamattomien tietojen tallentamista istuntotallennukseen, jotta jos käyttäjä siirtyy pois ja palaa, heidän edistymisensä palautuu turvallisesti. Tämä lähestymistapa varmistaa tietosuojan ilman, että luotetaan epäluotettavaan selaimen käyttäytymiseen.