Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Refresh if filesize > 0

[es] :: Javascript i AJAX :: Refresh if filesize > 0

[ Pregleda: 2742 | Odgovora: 7 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

ventura

Član broj: 32
Poruke: 7781
*.bg.wifi.vline.verat.net



+6455 Profil

icon Refresh if filesize > 008.09.2004. u 15:39 - pre 238 meseci
Dali neko moze da mi pomogne da napisem kod u JavaScriptu.

imam 3 html fajla
main.htm
gornji.htm
live.htm

main.htm je ovo:

Code:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">
<html>
<head>
<title>Main Loader</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta http-equiv="refresh" content="1; url=main.htm; target=mainFrame">

</head>

<frameset rows="1,*" frameborder="NO" border="0" framespacing="0">
  <frame src="gornjiframe.htm" name="topFrame" scrolling="NO" noresize >
  <frame src="live.htm" name="mainFrame">
</frameset>
<noframes><body>
</body></noframes>
</html>


e sada, ja putem ovog <meta http-equiv="refresh" content="1; url=main.htm; target=mainFrame"> osvezavam main na svaki 1 sekund.

Medjutim problem mi se desava kada se refresh desi u istom trenutku kada PERL skripta upisuje u file, i onda live.htm ima size 0, i prikaze se beo ekran koji stoji 1 sec do sledeceg refresha.
Ja bi da eliminisem taj beli ekran tako sto cu napisati skriptu, koja bi ovaj deo:
<meta http-equiv="refresh" content="1; url=main.htm; target=mainFrame">
prepravila u nesto tipa "refresh, samo ako je sizeof(live.htm) > 0"

Dali je to moguce izvesti u JavaScriptu, i ima li ko nekakav hint?
 
Odgovor na temu

bluesman

Član broj: 4505
Poruke: 1895
*.188.eunet.yu



+1 Profil

icon Re: Refresh if filesize > 009.09.2004. u 00:20 - pre 238 meseci
Tesko da moze javascript da proverava velicinu fajla.

Ja bih to ovako uradio:
- refresh ide normalno kako ide
- umesto tog fajla ucitavas neki drugi u koje proveris:

if filesize (file1.txt) > 0 include file1.txt
else include file1.bak

(naravno ovo je pseudokod :-)

A file 2 ti je prethodna verzija fajla, znaci, umesto da jednostavno prepises novi file, prvo uradis
- rename file1.txt u file1.bak
- a onda pises file

Tako ce u najgorem slucaju da ti se otvori poslednja verzija (pre novog upisa)
Goran Pilipović fka bluesman
 
Odgovor na temu

bOkIcA
Bojan Abramovic
Novi Sad

Član broj: 1808
Poruke: 520
*.metrohive.net

Sajt: www.bokica.com


Profil

icon Re: Refresh if filesize > 009.09.2004. u 03:35 - pre 238 meseci
Naravno da JS ne moze da proverava velicinu fajla direktno na serveru, ali moze da da velicinu objekta-frejma u bajtovima tj. "ucitanog" fajla i to koliko znam podrzava samo IE (6-ica, cini mi se).

prica za IE:
Da se u poseban (treci) frejm ucita zeljena strana, da se tada proveri velicina u bajtovima i ako je > 0, prebaci sadrzaj u glavni frejm.

za mozillu:
Mozilla podrzava pretrazivanje sadrzaja window objekta, odnosno frejma u tom slucaju, sto bi znacilo da trazimo neki odredjeni string kako bi smo bili sigurni da je fajl > 0.


i naravno da sam morao da isprobam !@#%^@

Code:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">
<html>
<head>
<title>Main Loader</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script language="javascript">
<!--
function refresh(){
    parent.tempFrame.location.reload();
    
    // ovo podrzava IE
    if (parent.tempFrame.document.fileSize) {
        var browser = "IE";
        var velicina = parent.tempFrame.document.fileSize;
    } 
    // ovo podrzava Mozilla  i zakuca refresh u ostalim browserima cak i IE-u
    else if (parent.tempFrame.window.find(" ")) {  // trazi space npr.
        var nadjen_string = true;
        }
        
     if (browser == "IE" && velicina > 0)
         parent.mainFrame.location.href = parent.tempFrame.location.href;
  if (nadjen_string)    
         parent.mainFrame.location.href = parent.tempFrame.location.href;
     if (browser != "IE" 
     
    setTimeout("refresh()", 1000);
}
window.onload=refresh;
//-->
</script>
</head>

<frameset rows="*" cols="0,*" frameborder="NO" border="0" framespacing="0">
  <frame src="live.htm" name="tempFrame" scrolling="NO" noresize >
    <frameset rows="0,*" cols="*" frameborder="NO" border="0" framespacing="0">
      <frame src="gornjiframe.htm" name="topFrame" scrolling="NO" noresize >
      <frame src="" name="mainFrame">
    </frameset>
</frameset>
<noframes><body>
</body></noframes>
</html>


Ako nije ni IE koji podrzava size, a ni Mozilla, skripta stoji. (to bi se valjda dalo ispraviti)
I nisam uspeo da uklavirim kako se kopira sadrzaj jednog frejma u drugi ako je to uopste moguce pa se ucitavanje vrsi prvo u jedan frejm pa u drugi sto moze dodatno da uspori stvar jer je refresh na svaku sekundu.


Naravno da je Goran u pravu, bolji je nacin da se server-side jezikom to odradi.
 
Odgovor na temu

-zombie-
Tomica Jovanovic
freelance programmer
ni.ac.yu

Član broj: 4128
Poruke: 3448
195.252.85.*

Sajt: localhost


+5 Profil

icon Re: Refresh if filesize > 009.09.2004. u 04:32 - pre 238 meseci
može preko XMLHttpRequest() (ili ekvivalentne activeX kontrole u IE6).


 
Odgovor na temu

VRider
Marković Damir
(BGD/SD Karaburma)/Pirot

Član broj: 1510
Poruke: 4132
212.200.53.*

Jabber: damirm | gmail | com
ICQ: 134002435


+13 Profil

icon Re: Refresh if filesize > 009.09.2004. u 16:52 - pre 238 meseci
Code:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">
<html>
<head>
<title>Main Loader</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script language="javascript">
<!--
function refresh(){
    parent.tempFrame.location.reload();
    
    if (parent.tempFrame.document.provera.trebarefresh.value == "") {
        refresh();
    } 
     
    setTimeout("refresh()", 1000);
}
window.onload=refresh;
//-->
</script>
</head>

<frameset rows="*" cols="0,*" frameborder="NO" border="0" framespacing="0">
  <frame src="live.htm" name="tempFrame" scrolling="NO" noresize >
    <frameset rows="0,*" cols="*" frameborder="NO" border="0" framespacing="0">
      <frame src="gornjiframe.htm" name="topFrame" scrolling="NO" noresize >
      <frame src="" name="mainFrame">
    </frameset>
</frameset>
<noframes><body>
</body></noframes>
</html>


Ovo je ono resenje koje sam ti predlozio, sa hidden poljem "trebarefresh" u live.html.
Ovo dodaj na kraj fajla
Code:
<form name=provera>
<input type=hidden value="bilosta" name=trebarefresh>
</form>

JaFreelancer.com
 
Odgovor na temu

ventura

Član broj: 32
Poruke: 7781
*.bg.wifi.vline.verat.net



+6455 Profil

icon Re: Refresh if filesize > 009.09.2004. u 21:47 - pre 238 meseci
@bokica
Kod mene tvoj kod prijavljuje gresku na 27 line-u, ok to ispravim, i kada otvorim main.htm on mi loaduje live.htm i vidim ga, i vidim da ide refresh non stop, ali se live.htm ne menja vec svo vreme stoji stari, iako je filesize garantovano veci od 0 svo vreme, da nije problem u premestanju frameova?

@VRider, ovo tvoje resenje mi uopste ne prikazuje nista, samo mi stoji blanko stranica, a refresh ide, i ne prijavljuje nikakvu gresku u javascriptu...

 
Odgovor na temu

bOkIcA
Bojan Abramovic
Novi Sad

Član broj: 1808
Poruke: 520
*.metrohive.net

Sajt: www.bokica.com


Profil

icon Re: Refresh if filesize > 010.09.2004. u 02:51 - pre 238 meseci
Samo u IE-u nece osvezavati kad je < 0, a u ostalim browserima refresh ide stalno.

Code:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">
<html>
<head>
<title>Main Loader</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script language="javascript">
<!--
function refresh(){
    parent.tempFrame.location.reload();
    
    if (parent.tempFrame.document.fileSize)
        var velicina = parent.tempFrame.document.fileSize;
    else
        var drugi_browser = true;
        
    if (velicina > 0)
        parent.mainFrame.location.href = parent.tempFrame.location.href;
     

    if (drugi_browser)    
        parent.mainFrame.location.href = parent.tempFrame.location.href;
     
    setTimeout("refresh()", 1000);
}
window.onload=refresh;
//-->
</script>
</head>

<frameset rows="*" cols="0,*" frameborder="NO" border="0" framespacing="0">
  <frame src="live.htm" name="tempFrame" scrolling="NO" noresize >
    <frameset rows="0,*" cols="*" frameborder="NO" border="0" framespacing="0">
      <frame src="gornjiframe.htm" name="topFrame" scrolling="NO" noresize >
      <frame src="" name="mainFrame">
    </frameset>
</frameset>
<noframes><body>
</body></noframes>
</html>
 
Odgovor na temu

ventura

Član broj: 32
Poruke: 7781
*.bg.wifi.vline.verat.net



+6455 Profil

icon Re: Refresh if filesize > 010.09.2004. u 08:05 - pre 238 meseci
@bokice, ovaj tvoj zadni primer radi odlicno... Hvala puno
 
Odgovor na temu

[es] :: Javascript i AJAX :: Refresh if filesize > 0

[ Pregleda: 2742 | Odgovora: 7 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.