Naja data-ajax-append a historie
- luboshilgert
- Člen | 11
Ahoj,
včera jsem přešel na Naju a řeším teď jeden „problém“. Mám tabulku
a vždy když doskroluji dolů tak tam appenduji další položky (lazy load
stránkování pomocí data-ajax-append). Položku v seznamu si mohu
rozkliknout což překreslí hlavní snippet. Pokud pak dám back button vrátí
mě to na seznam ale jakoby na stránku 1 úplně dolů. Potřeboval bych
nějak zapnout historii. Zkusil jsem na ten loadMore signál dát
data-naja-history=„replace“ nicméně to nepomáhá a konzole
vypisuje chybu:
Uncaught
Exception { name: „NS_ERROR_ILLEGAL_VALUE“, message: "", result: 2147942487,
filename: „http://localhikob2b/assets/js/Naja.js“, lineNumber: 2159,
columnNumber: 0, data: null, stack:
„replaceState@http://localhikob2b/assets/js/Naja.js:2159:65\npushNewState@http://localhikob2b/assets/js/Naja.js:2226:37\nmakeRequest@http://localhikob2b/assets/js/Naja.js:2364:15\nasyncclickElement@http://localhikob2b/assets/js/Naja.js:1955:27\nhandleUI@http://localhikob2b/assets/js/Naja.js:1919:19\nEventListener.handleEventbindElement@http://localhikob2b/assets/js/Naja.js:1883:22\nbindUI@http://localhikob2b/assets/js/Naja.js:1887:25\ninitialize@http://localhikob2b/assets/js/Naja.js:1865:15\ninitialize@http://localhikob2b/assets/js/Naja.js:2324:15\nEventListener.handleEvent*@http://localhikob2b/assets/js/main.js:4:10\n“
}
Naja.js:2159
Jde nějak historie v kombinaci s data-ajax-append zprovoznit nebo dělám
někde chybu?
Díky za případné tipy a rady
- jiri.pudil
- Nette Blogger | 1029
Ahoj, viz https://github.com/…ja/issues/17. Ve zkratce: Naja ukládá do historie i aktuálně vykreslené snippety, díky tomu se potom přechod zpět v historii obejde bez dalšího requestu. Různé prohlížeče ale mají různé limity velikosti history state objektu, na které jsi zřejmě narazil.
Řešením by mohlo být pro ten request donačítající další položky vypnout cachování snippetů, ale obávám se, že v případě nekonečného stránkování se to neobejde bez nějaké vlastní logiky, protože jinak ti Naja bude při navigaci data pořád přidávat místo překreslení 🤔
- luboshilgert
- Člen | 11
Super děkuji za odpověď. Skutečně v Chromu i Edge to funguje jak má a
to až do úplného konce. Firefox selže hned při načtení „druhé“
stránky. Při vypnutí cachování snippetů se to chová tak, že se vlastně
vykreslí seznam položek a začíná to tou první na dané stránce (položky
na předchozích stránkách se nezobrazí).
Každopádně díky aspoň vím, čím to je a dá se na tom pracovat:)
- luboshilgert
- Člen | 11
Ještě bych měl dotaz, který se netýká historie. Mám klasický
vyhledávací formulář, který pošle tento request
-----------------------------37610477407073825011076363015
Content-Disposition: form-data; name=„search“
11200
-----------------------------37610477407073825011076363015
Content-Disposition: form-data; name=„_do“
searchForm-submit
-----------------------------37610477407073825011076363015
Content-Disposition: form-data; name=""
-----------------------------37610477407073825011076363015--
Na localhostu mi vše funguje dobře ale na ostrém serveru mám nasazený
modsecurity a ten mi požadavek blokuje. Vadí mu poslední prázdné pole
name="".
Jednak moc nechápu, kde se tam to pole bere…mám tam jen input na
vyhledávání a button na odesílání. Doteď jsem používal nette.ajax.js a
ten to poslední vyplnil name=„undefined“ a to bylo zřejmě pro
modsecurity ok.
- luboshilgert
- Člen | 11
Tak jsem objevil chybku.
V šabloně jsem měl na odeslání formuláře jen button type=submit ale
žádné name… stačilo ho tedy pojmenovat
- jiri.pudil
- Nette Blogger | 1029
Vida, to je bug, díky za report!
Zábavné je, že to je špatně i v nette.ajax.js, odkud jsem to převzal
😇 – pole s prázdným name
se podle specifikace HTML mají
úplně vynechat.
- luboshilgert
- Člen | 11
Tak super…to jsem rád, že jsem alespoň trochu pomohl:) Zajímavé tedy ale je, že nette.ajax.js vyplnil to name=„undefined“ (a modsecurity byl spokojen) kdežto Naja odesílala name=„“