Miksi sivu ei päivity kun countteri=0?
<html>
<head> <title>HaukiTV</title><META http-equiv='Page-Enter' content='revealtrans(duration=3,transition=12'>
<META HTTP-EQUIV='Refresh' CONTENT=30;URL='http://80.186.4.152:4040/'><script>function countDown() {count.innerHTML = countValue;countValue = countValue - 1;if (countValue >= 0) {setTimeout('countDown()', 1000);}}</script></head><body OnLoad= 'countValue=20; countDown()' bgcolor=1d1d26 text=FFFFFF><center><FONT SIZE=4>HaukiTV</font><br><br>
<FONT SIZE=3>Odota: <font color=0000FF><span id='count'></font> </span> sekuntia, tai klikkaa Päivitä - nappia!</font><br><br>
<img src='shot.jpg' alt=Live-kuva><br>
<p> </p><FONT SIZE=1>HaukiTV by:<font color=FFFFFF> jrantala.com</font><br><br>
<!--WebServer 1.0-->
</body></html>Koodin järkevä muotoilu auttaisi asiaa, debuggaus helpottuisi. Ja miksi ihmeessä käyttää javascriptiä kun tuossa on jo meta-päivitys.
Siistitään koodia hieman, eli korjataan virheitä, siirretään ulkoasu CSS:n huoleksi ja vain IE:ssä toimivat jutut pois:
<html><head>
<title>HaukiTV</title>
<script type="text/javascript">
function countDown() {
count.innerHTML = countValue;
countValue = countValue - 1;
if (countValue >= 0) {
setTimeout('countDown()', 1000);
} else {
document.location.href = 'http://80.184.4.152:4040/';
}
}
</script><style type="text/css">
body {
background : #1D1D26;
color : #FFF;
text-align : center;
}
#dokumentti {
margin : 0 auto;
text-align : left;
width : 20em;
}
h1 { font-size : 14pt; }
span { color : #00F; }
#tehnyt { font-size : 7pt; }
#tehnyt a,
#tehnyt a:active,
#tehnyt a:link,
#tehnyt a:visited { color : #FFF; }
</style>
</head><body onload="countValue = 20; countDown();">
<div id="dokumentti">
<h1>HaukiTV</h1>
<p>Odota <span id="count"></span> sekuntia tai klikkaa päivitä-nappia!</p>
<p><img alt="Live-kuva" src="shot.jpg"></p>
<p id="tehnyt">HaukiTV by: <a href="http://jrantala.com">jrantala.com</a></p>
</div>
</body></html>Otin metatagit kokonaan pois, jotta JavaScript saa hoitaa kaiken ja että laskuri myös oikeasti laskee sitä aikaa, mikä tullaan odottamaan.
Olisi vielä hyvä sijoittaa suora linkki sinne minne ollaan menossa, jotta sivu pelittäisi silloinkin kun JavaScripti on pois päältä.
Ok. Miten saisin ton lähetettyä winsockilla vb:llä?
Edellisen lähetin näin:
sendSock.SendData httpHeader
sendSock.SendData "<html>" & vbCrLf
sendSock.SendData "<head> <title>HaukiTV</title>"
sendSock.SendData "<META http-equiv='Page-Enter' content='revealtrans(duration=3,transition=12'>" & vbCrLf
sendSock.SendData "<META HTTP-EQUIV='Refresh' CONTENT=10;URL='http://" & GetInternetIP(True) & ":" & txtport.Text & "/'>"
sendSock.SendData "<script>"
sendSock.SendData "function countDown() {"
sendSock.SendData "count.innerHTML = countValue;"
sendSock.SendData "countValue = countValue - 1;"
sendSock.SendData "if (countValue >= 0) {setTimeout('countDown()', 1000);}"
sendSock.SendData "}"
sendSock.SendData "</script>"
sendSock.SendData "</head>"
sendSock.SendData "<body OnLoad= 'countValue=10; countDown()' bgcolor=1d1d26 text=FFFFFF>"
sendSock.SendData "<center>"
sendSock.SendData "<FONT SIZE=4>HaukiTV</font><br><br>" & vbCrLf
sendSock.SendData "<FONT SIZE=3>Odota: <font color=0000FF><span id='count'></font> </span> sekuntia, tai klikkaa Päivitä - nappia!</font><br><br>" & vbCrLf
sendSock.SendData "<img src='shot.jpg' alt=Live-kuva><br>" & vbCrLf
sendSock.SendData "<p> </p>"
sendSock.SendData "<FONT SIZE=1>Serveri ohjelman tekijän sivut:<font color=FFFFFF> www.jrantala.com</font><br><br>" & vbCrLf
sendSock.SendData "<!--WebServer 1.0-->" & vbCrLf
sendSock.SendData "</body>"
sendSock.SendData "</html>"
PageSent = True
End If
End SubSamalla tavalla. Jokaisen lainausmerkin tilalle voi laittaa " & ChrW$(34) & "
Toinen tapa on tallentaa tuo tiedostoksi, avata se stringiin ja sitten korvata sieltä halutut kohdat, esim. laittaa vaikka tyyliin {IP} siihen kohtaan, johon sijoitetaan IP ja sitten Teksti = Replace$(Teksti, "{IP}", GetInternetIP(True))
Ja sitten selviää tiedonlähetyksessä yhdellä rivillä: sendSock.SendData Teksti & vbCrLf
Aihe on jo aika vanha, joten et voi enää vastata siihen.