Snažím sa vytvoriť webovú aplikáciu na správu rozloženia, ktorá v nej umožňuje hosťovať ďalšie podradené aplikácie (rovnaká doména).
V súčasnej dobe môže hlavná aplikácia sledovať akékoľveknavigácia v podradenej aplikácii a vedenie navigačného záznamu v hlavnej aplikácii. Používateľ môže kliknúť na tlačidlo späť alebo dopredu a prejsť na poslednú stránku. Všetko funguje dobre, až kým nenájdem nejaký kód v podradenej aplikácii, ktorý sa programovo zmení location.hash
nehnuteľnosť alebo volanie history.pushState
metóda v detskej aplikácii.
Prehliadač zvyčajne automaticky pridá starý stav histórie do zásobníka histórie podradenej aplikácie, ktorý je správny. Moderný prehliadač však vždy zdieľať históriu zásob medzi hlavná aplikácia a všetky ostatné prvky iframe (aplikácia pre deti), ktorá vedie k zlomenej histórii hlavného použitia. Používateľ nemôže v prehliadači kliknúť späť na predchádzajúcu stránku, ktorá bola navštívená pred hlavnou aplikáciou.
Podľa W3C
Na história spoločných relácií a kontext prehliadania na najvyššej úrovni je únia všetkých histórií relácií všetkýchprezeranie kontextov všetkých aktívne objekty dokumentu, ktoré zdieľajú tento kontext prehliadania na najvyššej úrovni, so všetkými záznamami, ktoré sú aktuálnymi záznamami v príslušných položkách história relácií bola odstránená, s výnimkou aktuálneho zadania kĺbu história relácie.
Mám 2 otázky.
Je možné vytvoriť samostatnú históriu pre každý iframe? Skúšam nastaviť
document.domain
ako toto.- hlavná doména aplikácie je „apps.site.com“.
- doména podradenej aplikácie je „apps.site.com“, ale ja ju zmením na „site.com“, aby som zabránil skriptovaniu medzi stránkami. Ale nefunguje to, pretože prehliadač synchronizuje túto históriu, nie iframe.
Existuje nejaký spôsob, ako zabrániť iframe v navigácii / hashchange / pushState? Moja súčasná myšlienka je oprava všetkých súvisiacich vlastností / metód a tiež ich počúvanie
click
udalosť zabrániť zmene histórie prehľadávača. Nie som si istý, či to bude fungovať, a zdá sa mi to príliš riskantné.
Vďaka,
Ref: https://html.spec.whatwg.org/multipage/browsers.html#traverse-the-history
odpovede:
0 pre odpoveď č. 1Viem, že Chrome má novú značku, ktorá sa spúšťa v samostatnom procese ako vaša aplikácia. Môžete to skontrolovať: https://developer.chrome.com/apps/tags/webview
Ale táto značka nie je niečo, čo HTML5 štandardizovalo. Väčšina ostatných hlavných prehľadávačov to nepodporuje.
Ale pre Iframe je odpoveď nie.