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 Sub
Samalla 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.