Eitt stórt mál með forritum sem byggjast á JavaScript er að þeir brjóta bakhnappinn. Ef þú uppfærir efni á síðunni með JavaScript frekar en að hlaða inn nýjum síðu frá þjóninum, er engin færsla gerð í vafraferlinum; svo þegar notandinn smellir á Til baka, búist við að fara aftur í fyrra ríki, þá lýkur þeir á fyrri staðinn í staðinn.
Dragðu og slepptu er frábær leið fyrir notendur að hafa samskipti við vefforritin þín. En nothæfi hagnaðurin mun týnast ef notendur smella á bakhnappinn eftir að hafa eytt tíma í gegnum umsóknina og búast við að fara aftur á síðu og fara aftur í byrjunarskjáinn. Í þessari grein "Halló! HTML5 og CSS3 "höfundur Rob Crowther sýnir þér hvernig á að nota HTML5 sögu API til að forðast að örlög.
Vandamálið er hægt að sýna einfaldlega. Allt sem þú þarft er aðgerð sem uppfærir síðuna sem svar við notendavirkni:
var times = 0;function doclick() {times++;document.getElementById('message').innerHTML ='Recorded ' + times + ' clicks';}
og smá merking:
Click MeRecorded 0 clicks
Í raunveruleikanum myndi vefsíðan þín gera eitthvað flóknara, eins og að sækja nýtt efni frá þjóninum í gegnum AJAX, en einföld uppfærsla er nóg til að sýna fram á hugmyndina. Við skulum sjá hvað gerist þegar notandinn heimsækir síðuna.
The doclick () virka er hægt að uppfæra til að nýta sögu API. Í hvert skipti sem blaðið er uppfært mun það einnig setja staðsetningu.hash:
function doclick() {times++;location.hash = times;document.getElementById('message').innerHTML ='Recorded ' + times + ' clicks';}
Uppfærsla sögunnar er aðeins hluti af vandamálinu; þú þarft einnig að vera fær um að uppfæra stöðu síðunnar til að passa við ástandið í sögunni.
Vegna þess að þú ert sá sem stjórnar sögunni, þá er það undir þér komið að stjórna síðunni. Til að uppfæra síðuna þína til að bregðast við að staðsetning.hash sé breytt geturðu hlustað á hashchange atburðinn:
function doclick() {times++;location.hash = times;}window.onhashchange = function() {if (location.hash.length > 0) {times = parseInt(location.hash.replace('#',''),10);} else {times = 0;}document.getElementById('message').innerHTML ='Recorded ' + times + ' clicks';}
The doclick () virka er nú aðeins ábyrgur fyrir að uppfæra tímabreytan og breyta hesti. The hashchange atburður er á gluggi mótmæla; Þegar það fer fram skaltu ganga úr skugga um að kjötið sé til staðar. Í alvöru forriti vilt þú líka að ganga úr skugga um að það hafi gild gildi. Næst seturðu gildi tímanna til að vera númerið í kjötkássunni. Að lokum uppfærir þú skjalið til að endurspegla rétta blaðsíðuna. Við skulum skoða þennan nýja kóða:
Staðsetningin.hash eignin og tengd skiptihendaviðburðurinn eru gagnleg ef þú vilt taka tilteknar skoðanir af umsókn þinni og leyfa notandanum að sigla á milli þeirra. Google Mail notar þessa aðferð með því að leyfa þér að fara á milli pósthólfsins (#inbox), tengiliðana (#contacts) og aðrar skoðanir. Ef þú ert með Gmail reikning skaltu skoða hvað er að gerast með slóðinni þegar þú vafrar á mismunandi síðum og smelltu síðan aftur.
En eins og langt er að upplýsingar ríkja, þá leyfir kjötið aðeins að geyma streng. Þú gætir umritað flóknari hlut en slóðin myndi fljótlega verða löng og ómeðhöndin og myndi ekki vera eftirminnilegt fyrir notendur þína. Ef þú þarft flóknara upplýsingar sem eru geymdar sem hluti af sögunni, þá væri betra að nota hakkinn sem lykillinn að því að draga frekari upplýsingar frá einhverjum verslunum. Þó að þú gætir rúlla eigin nálgun á þessu, hefur HTML5 veitt API til að gera það fyrir þig í gegnum history.pushState () aðferðina og popstate atburðinn. Þessar aðferðir leyfa þér að vista og endurhlaða flókna hluti.
Þú hefur lært að því að stjórna sögu vafrans er hægt að gera bakhnappinn hegða sér á skynsamlegri hátt í tengslum við umsókn þína, en örgjörvunarforritið gefur þér aðgang að skipulögðum merkingarfræðilegum upplýsingum í innihald síðunnar.
Hvað notar þú fyrir þessa tækni? Hefur þú þróað aðra aðferð? Láttu okkur vita í athugasemdunum.
Valin mynd / smámynd, farðu aftur í myndina um Shutterstock.