See artikkel on masintõlke peegelartikkel, palun klõpsake siia, et hüpata algse artikli juurde.

Vaade: 17142|Vastuse: 2

[HTML/HTML5] HTML ei värskenda URL-aadressi muutmiseks

[Kopeeri link]
Postitatud 12.09.2017 13:55:04 | | | |

Tutvustatud alates Gecko2 (Firefox 4 / Thunderbird 3.3 / SeaMonkey 2.1)

HTML5 tutvustab kahte meetodit: histtory.pushState() ja history.replaceState(), mis võimaldavad lisada ja muuta ajalooüksusi. Samal ajal töötavad need meetodid ka window.onpostate sündmusega.

Muuda viitajat meetodiga history.pushState(), mida saab kasutada xmlhttpRequest objekti http-päises pärast oleku muutmist. See viitaja on dokumendi URL, kui XMLHttpRequest loodi.

pushState'i kasutatakse praeguse lehe kirje lisamiseks ajalukku, samas kui replaceState ja pushState kasutatakse täpselt samamoodi, ainus erinevus on see, et seda kasutatakse praeguse lehe kirje muutmiseks ajaloos.

näide
Oletame http://mozilla.org/foo.html leht käivitab JS-i

var stateObj = { foo: "baar" }; history.pushState(stateObj, "lehekülg 2", "bar.html");
See meetod muudab URL-aadressiriba kuvatuks http://mozilla.org/bar.html,Aga brauser ei laadi bar.html lehte, isegi kui see olemas on

Oletame jälle, et kasutaja jätkab http://google.com ligipääsu ja klõpsab tagasi. Sel hetkel saab URL-aadressiriba http://mozilla.org/bar.html leht popstate sündmuse (chrome), mis sisaldab stateObj koopiat. See leht näeb välja nagu foo.html. +

Sel hetkel klõpsame uuesti ja URL pöördub http://mozilla.org/foo.html,document saab uue popstate sündmuse ja nulloleku objekti. See tagastustoiming ei muuda dokumendi sisu. (Võib-olla proovib see mõne aja pärast laadida...) kroom)

pushState meetod
pushState() sisaldab kolme parameetrit: olekuobjekt, pealkiri (nüüd ignoreeritud, käsitlemata), URL (valikuline). Spetsiifikas:

·        olekuobjekt – Olekuobjekt on Javascrip{filter}t objekt, mis seostub uue ajalooüksusega, mis on loodud pushState() meetodiga. Kasutatakse info salvestamiseks kirjete kohta, mida soovid ajalukku lisada. Olekuobjekt võib olla ükskõik milline Json-string. Kuna Firefox kasutab kasutaja kõvaketast olekuobjekti ligipääsuks, on selle objekti maksimaalne salvestusruum 640k. Kui see väärtus on suurem, viskab pushState() meetod erandi. Kui vajad rohkem ruumi hoiustamiseks, kasuta kohalikku hoiukohta.

·        pealkiri—Firefox ignoreerib seda parameetrit nüüd, kuigi seda võidakse tulevikus kasutada. Kõige turvalisem viis seda praegu kasutada on edastada tühi string, et vältida tulevasi muudatusi. Või võid esitada lühikese omanditunnistuse, mis näitab osariiki

·        URL - Seda parameetrit kasutatakse uue ajaloo üksuse URL-i edastamiseks, pane tähele, et brauser ei laadi seda URL-i pärast pushState() meetodi kutsumist. Aga võib-olla proovib see mõne aja pärast seda URL-i laadida. Näiteks pärast brauseri taaskäivitamist ei pruugi uus URL olla absoluutne tee. Kui see on suhteline tee, siis on see suhteline olemasoleva URL-i suhtes. Uus URL peab olema sama domeeni kui olemasoleva URL, vastasel juhul pushState() teeb erandi. See parameeter on valikuline ja kui see on tühi, paigutatakse see dokumendi praeguseks URL-iks.

Mingis mõttes on pushState() meetodi kutsumine sarnane window.locatio{filter}n = "#foo" seadistamisega, mis mõlemad loovad ja aktiveerivad teise ajalooüksuse, mis on seotud praeguse dokumendiga, kuid pushState()-l on mõned täiendavad eelised:

Uus URL võib olla ükskõik milline URL, mis asub samas domeenis kui praegune URL, erinevalt windows.locatio{filter}n, mis jääb samasse dokumenti, kui on seatud ainult räsi.

l Sa võid URL-i muutmata jätta, kui pole vaja. Võrdluseks sea window.locatio{filter}n = "#foo"; Genereeritakse ainult uusi ajalooüksusi, kui praegune räsi pole #foo

Sa saad seostada suvalisi andmeid oma uue ajalooüksusega. Räsipõhise lähenemise puhul tuleb kõik asjakohased andmed kodeerida lühikeseks stringiks.

Pane tähele, et pushState() meetod ei põhjusta räsivahetuse aega, isegi kui vana ja uus URL on lihtsalt erinevad räsid.

replaceState() meetod
history.replaceState() kasutatakse palju sarnaselt pushState(), välja arvatud see, et replaceState() kasutatakse praeguse ajaloo üksuse muutmiseks, mitte uue loomiseks. See meetod võib mõnikord olla kasulik, kui on vaja uuendada olekuobjekti või praegust ajaloo üksust teatud kasutajakäitumise tõttu ning seda saab kasutada olekuobjekti või praeguse ajaloo entiteedi URL-i uuendamiseks.

Popstate'i üritus
Kui ajaloo üksus muutub, toimub popstate sündmus. Kui ajaloo üksus genereeritakse pushState ja replaceState meetoditega, sisaldab popstate sündmuse olekuatribuut ajalooobjekti koopiat

Vaata täpsemalt window.onpopstate

Loe praegust seisu
Loe olemasolevat olekut

Kui leht laaditakse, võib sellel olla mitte-tühi olekuobjekt. See võib juhtuda, kui leht seab olekuobjekti (kasutades pushState'i või replaceState'i) ja kasutaja taaskäivitab brauseri. Kui leht laaditakse uuesti, saab leht laadimissündmuse, kuid popstate sündmust ei toimu. Kui aga loed history.state omadust, saad selle olekuobjekti pärast popstate sündmuse toimumist


History.pushState() dokumentatsioon: https://developer.mozilla.org/zh-CN/docs/Web/API/History/pushState



Vastuvõtva URL-i parameeter on tüüpi string, mida kasutatakse praeguse aadressiriba URL-i muutmiseks. Üks asi, mida tähele panna, on see, et see parameeter ei saa olla sama mis cross-domain, st protokoll, domeeninimi ja port peavad olema samad.

Uncatch DOMException: Ebaõnnestus 'pushState' käivitamine 'History' peal: Ajalooseisundi objekti URL-iga 'http://www.test.com/' ei saa luua dokumendis, mille päritolu ' https://www.itsvse.com' ja URL 'https://www.itsvse.com/'.
    Juures <anonymous>:1:9



Õige kood:







Eelmine:Baidu Maps saab piirkonna koordinaatpunktid
Järgmine:Huawei insenerid kustutasid ekslikult kasutajaandmed, mistõttu Guangxi Mobile'is ei suutnud 800 000 mobiiltelefoni kõnesid teha
Postitatud 27.10.2017 09:51:10 |
See on üsna detailne, mitte halb
Disclaimer:
Kõik Code Farmer Networki poolt avaldatud tarkvara, programmeerimismaterjalid või artiklid on mõeldud ainult õppimiseks ja uurimistööks; Ülaltoodud sisu ei tohi kasutada ärilistel ega ebaseaduslikel eesmärkidel, vastasel juhul kannavad kasutajad kõik tagajärjed. Selle saidi info pärineb internetist ning autoriõiguste vaidlused ei ole selle saidiga seotud. Ülaltoodud sisu tuleb oma arvutist täielikult kustutada 24 tunni jooksul pärast allalaadimist. Kui sulle programm meeldib, palun toeta originaaltarkvara, osta registreerimist ja saa paremaid ehtsaid teenuseid. Kui esineb rikkumist, palun võtke meiega ühendust e-posti teel.

Mail To:help@itsvse.com