Browser History
BrowserHistory
-luokka webforJ:ssä tarjoaa korkean tason API:n vuorovaikutukseen selaimen historian kanssa. Selainsivu history mahdollistaa verkkosovellusten seurata käyttäjän navigointia sovelluksen sisällä. Hyödyntämällä selaimen historiaa kehittäjät voivat mahdollistaa ominaisuuksia kuten taakse- ja eteenpäin navigointi, tilan säilyttäminen ja dynaaminen URL-hallinta ilman täydellisiä sivulatauksia.
Navigointi historian läpi
Selaimen historian hallinta on keskeinen ominaisuus useimmissa verkkosovelluksissa. BrowserHistory
API mahdollistaa kehittäjille hallita sitä, miten käyttäjät navigoivat sovellustensa sivujen ja tilojen välillä, jäljitellen tai muuttaen selaimen normaalia käyttäytymistä.
Historian instanssin alustaminen tai hakeminen
Käyttääksesi BrowserHistory
API:ta, sinulla on kaksi päävaihtoehtoa historian instanssin hankkimiseksi:
- Uuden historian objektin luominen: Jos työskentelet itsenäisesti reitityskontekstista, voit luoda uuden instanssin
BrowserHistory
-luokasta suoraan.
BrowserHistory history = new BrowserHistory();
Tämä lähestymistapa soveltuu tilanteisiin, joissa sinun on hallittava historiaa eksplisiittisesti reitityskehyksen ulkopuolella.
- Historian hakeminen
Router
-komponentista: Jos sovelluksesi käyttää webforJ:n reititysratkaisua,Router
-komponentti luo ja hallinnoi jaettuaBrowserHistory
-instanssia. Voit käyttää tätä instanssia suoraan reitittimestä, mikä varmistaa johdonmukaisen historian hallintatavan koko sovelluksessa.
BrowserHistory history = Router.getCurrent().getHistory();
Tätä menetelmää suositellaan, kun sovelluksesi perustuu reititykseen, sillä se ylläpitää johdonmukaisuutta historian hallinnassa kaikissa näkymissä ja navigointitoimissa.
Historian hallinta
Seuraavia menetelmiä voidaan käyttää historian navigointiin webforJ-sovelluksessa:
-
back()
: Siirtää selaimen historian taaksepäin yhdellä askeleella, mikä simuloi käyttäjän painavan selaimen takaisin-painiketta. Jos historiapino ei enää salli lisäyksiä, jäädään nykyiselle sivulle.history.back();
-
forward()
: Siirtää selaimen historian eteenpäin yhdellä askeleella, mikä simuloi käyttäjän painavan selaimen eteenpäin-painiketta. Tämä toimii vain, jos historiapinossa on edessä merkintä.history.forward();
-
go(int index)
: Navigoi tiettyyn kohtaan historiapinossa indeksin perusteella. Positiivinen numero siirtää eteenpäin, negatiivinen numero taaksepäin ja nolla lataa nykyisen sivun uudelleen. Tämä menetelmä tarjoaa tarkemman hallinnan verrattunaback()
- jaforward()
-menetelmiin.history.go(-2); // Siirtää taaksepäin kahdella merkinnällä historiapinossa
-
size()
: Hakee kokonaismäärän merkinnöistä istuntohistorian pinossa, mukaan lukien nykyisesti ladattu sivu. Tämä voi olla hyödyllistä ymmärtäessä käyttäjän navigointipolkua tai toteutettaessa mukautettuja navigointiohjaimia.int historySize = history.size();
System.out.println("Historiapituus: " + historySize); -
getLocation()
: Palauttaa nykyisen URL-polun suhteessa sovelluksen alkuperään. Tämä menetelmä auttaa kehittäjiä hakemaan nykyisen polun, mikä on hyödyllistä URL-pohjaisessa reitityksessä yksisivuisissa sovelluksissa.Optional<Location> location = history.getLocation();
location.ifPresent(loc -> System.out.println("Nykyinen polku: " + loc.getFullURI()));
Tehokas navigoinnin ymmärtäminen on dynaamisten sovellusten rakentamisen peruskivi. Kun olet hallinnut navigoinnin perusteet, on tärkeää tietää, miten pääset käsiksi ja päivität URL-osoitteita, jotka liittyvät näihin navigointitapahtumiin.
URL-osoitteen hakeminen ja päivittäminen
Keskeinen osa navigointia ja selaimen historian hallintaa on kyky tehokkaasti hakea ja päivittää nykyistä URL-polku. Tämä on olennaista nykyaikaisissa verkkosovelluksissa, joissa URL-muutokset vastaavat erilaisia näkymiä tai tiloja sovelluksessa. BrowserHistory
API tarjoaa yksinkertaisen tavan hakea ja manipuloida nykyistä polkua suhteessa sovelluksen juuriin.
Router
Katso Router
artikkeli saadaksesi lisätietoja kattavasta URL- ja reitinhallinnasta
getLocation()
hakee nykyisen URL-polun suhteessa sovelluksen alkuperään. getLocation()
-menetelmä palauttaa Optional<Location>
-objektin, mikä mahdollistaa URL-osoitteen polkipartion hankkimisen ilman verkkotunnusta.
Optional<Location> location = history.getLocation();
location.ifPresent(loc -> System.out.println("Nykyinen polku: " + loc.getFullURI()));
Tilanhallinta
BrowserHistory
antaa sinun tallentaa ja hallita mukautettuja tietotiloja käyttämällä pushState()
ja replaceState()
-menetelmiä. Käyttämällä tilanhallintamenetelmiä voit hallita, mitä tietoja säilytetään osana historiamerkintää, mikä auttaa ylläpitämään johdonmukaista käyttäjäkokemusta navigoitaessa taakse- ja eteenpäin sovelluksessa. Seuraavia menetelmiä voidaan käyttää tilan hallintaan webforJ-sovelluksessa.
pushState(Object state, Location location)
: Lisää uuden merkinnän historiapinoon. Hyväksyy tilakohteen jaLocation
-objektin, joka edustaa uutta URL:ia.
Location location = new Location("/new-page");
history.pushState(myStateObject, location);
replaceState(Object state, Location location)
: Korvataan nykyinen historian merkintä. Tämä ei luo uutta merkintää pinoon kuten yllä oleva menetelmä.
Location location = new Location("/updated-page");
history.replaceState(myStateObject, location);
getState(Class<T> classOfT)
: Hakee tilakohteen, joka liittyy nykyiseen historian merkintään. Tämä menetelmä palauttaa Optiona, joka sisältää tilakohteen, joka deserialisoidaan määritettyyn luokkaan.
Optional<MyState> currentState = history.getState(MyState.class);
currentState.ifPresent(state -> System.out.println("Nykyinen sivu: " + state.getViewName()));
Tilamuutosten kuuntelu
BrowserHistory
-luokka tarjoaa mahdollisuuden rekisteröidä tapahtumakuuntelijoita, jotka reagoivat historian tilan muutoksiin.
addHistoryStateChangeListener(EventListener<HistoryStateChangeEvent> listener)
rekisteröi kuuntelijan, joka laukeaa, kun tila muuttuu, kuten kun käyttäjä painaa selaimen takaisin- tai eteenpäin-painiketta. Tämä menetelmä asettaa kuuntelijan selaimen popstate
-tapahtumalle, mikä mahdollistaa sovelluksesi reagoida käyttäjän toimintoihin tai ohjelmallisesti laukaistuihin tilamuutoksiin.
history.addHistoryStateChangeListener(event -> {
System.out.println("Historian tila muuttui: " + event.getLocation().getFullURI());
});
Tehokas tilanhallinta mahdollistaa sinun luoda sovelluksia, jotka reagoivat dynaamisesti käyttäjän toimintoihin. Käyttäjät voivat navigoida sovelluksessasi menettämättä kontekstiansa, mikä tekee kokemuksesta sujuvamman ja intuitiivisemman. Lisäksi tilan tallentaminen mahdollistaa edistykselliset ominaisuudet, kuten näkymäpaikkojen palauttamisen, suodattamis- tai lajitteluasetusten ylläpitämisen ja syvien linkkien tukemisen—kaikki nämä edesauttavat kiehtovampaa ja luotettavampaa sovellusta.