Sporo učitavanje dinamički generisanog javascripta
Dinamički generišem javascript snippet koji treba da prikaže parče html-a u nekoj stranici.
Drugim rečima, korisniku šaljem <script src="nešto.php"> tag koji on može da postavi na neko mesto u svojoj stranici i na tom mestu očekuje da mu se pojavi neki sadržaj koji ja generišem. Dosad sam radio tako što u toj skripti imam document.write() i to lepo radi, ali postoji problem: Ako generisanje "nešto.php" traje malo duže ili postoji neki problem koji produžava njegovo izvršavanje, u korisnikovom browseru stranica stoji učitana do mesta gde treba da dođe to moje parče i onda pravi pauzu dok se nešto.php smisli, i tek onda nastavlja da renderuje ostatak stranice. Hoću da izbegnem mogućnost ovog zastoja. Da li je neko od prisutnih imao sličan problem i kako ga je rešio? Mislite li da je IFRAME bolje rešenje za ovo? IFRAME mi se ne dopada zato što se odvojeno stilizuje od stranice u kojoj se nalazi. |
Recimo da na poziciju gde hoće da ubaci to tvoje postavi samo kontejner...
Kôd:
<div id="nesto_php"></div> |
To je jedno moguće rešenje, ali malo usložnjava instalaciju i povećava mogućnost greške - korisnik mora da uređuje svoju stranicu na dva mesta, a ovako mu samo kažem "umnoži ovo parče koda i nalepi tamo gde hoćeš".
|
Možda ti pomogne defer atribut script elementa, ali to radi samo u IE, a za ostale bi moglo da dodaš da na event DOMContentLoaded štampa taj script element.
|
hmmm...a da tim prvim document.write-om generises div koji poziva funkciju koja ceka window.onload a onda povlaci snipet sa servera ajax-om
ovo bi (valjda) bilo ekvivalentno predlogu sa divom tamo gde treba - script tagom iznad </body> (apsolutno nisam siguran dal' ovo uopste moze da se izvede :D ) |
Jesi pokusao taj nesto.php da zamjenis sa obicnim nesto.js fixnog sadrzaja pa da vidis je'l problem u generisanju tog PHP fajla ili je problem 'uvlacenje' fajla sa drugog sajta /servera...?
|
@BrankoR: Probao sam defer, kao što kažeš nema nikakvog efekta u FF, stranica čeka dok se js izgeneriše.
@kodi: Tako nešto je i meni palo na pamet, verovatno ću baš to prvo da probam. @misko: Da, kad je statički JS u pitanju to radi kako treba. Ali hoću da se osiguram da mi generisanje, koje iz različitih razloga može da potraje, ne zaustavlja učitavanje ostatka stranice. |
Zavisi i kakv ti je sadrzaj tu. Ja sam skoro imao problem sa sajtom koji (iz nekog razloga) ima preko 600 kategorija (od kojih su 90% prazne) do 5 nivoa i sve se ucitavaju na svakoj strani kao stablo. Resio sam tako sto sam iz PHP-a kada god se nesto promeni u kategoriji, generisao js file, nesto kao cache, koji onda include-ujem u frontend na standardan nacin <script src=... >. To je radilo ok i nije bilo nikakvih zastoja, osim samog generisanja stabla, ali to ne moze brze jer ima previse kategorija a i ne zavisi od php.
|
Upravo sam probao ovo kodijevo rešenje, izgleda da radi baš kako mi treba.
Koristio sam XmlHttpRequest kod odavde: http://www.quirksmode.org/js/xmlhttp.html i nK-ov event attach: http://www.devprotalk.com/showthread.php?t=1478 Hvala svima. Ako nekom treba kôd, okačiću. |
Upravo sam naišao na zanimljivu varijaciju - nešto otprilike ovako ...
Kôd:
<div id="insertPoint" style="display: inline;"></div> |
Vreme je GMT +2. Trenutno vreme je 02:19. |
Powered by vBulletin® Verzija 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Copyright © DevProTalk. All Rights Reserved.