För att sätta igång en javascript-funktion efter en viss tid använder du setTimeOut(funktion,n); där funktion=den funktion (eller vad man nu vill ha) som ska köras i form av en sträng, och n=antal millisekunder som ska gå tills funktion ska köras.
Och koden som kollar om man fått nå mess ser ut så här:
Set RS = Conn.Execute("Select * From chat Where mess_to=" & Session("UserId") & " And mess_to_read=false Order By id desc")
If RS.EOF Then%>
<%Else%>
<script language=javascript>
<!--
window.open("privat.asp?mem_id=<%=RS("mess_from")%>","INSTMESS<%=RS("mess_id_name")%>","width=450,height=300,scollbars=yes,loaction=no,status=no,toolbar=no")
//-->
</script>
<%End If
Set RS = Nothing
Vi börjar med att hoppa över ASP-koden utan koncentrerar oss på JavaScript-biten. Titta alltså på koden från webbläsarens "Visa källa" istället.
När du öppnar en popup ger du den ett "handtag" med foo=window.open... I foo har du då en objekt-referens som du kan använda. Om det är osäkert om fönstret öppnas eller inte (beroende på olika villkor eller användarens interaktion) bör du först definera handtaget som en variabel så att du kan kolla den senare (försöker du kolla en odefinierad variabel kommer du att få ett felmeddelande). Därför definierar vi den först med;
var foo=false;
Detta skall alltså ALLTID ske, oavsett om fönstret sedan skall öppnas eller inte. Sedan kollar du om fönstret är öppnat eller inte med;
Hmm mena du att jag ska skriva så här? Isåfall funkar det ej! Den laddar om hela popupen hela tiden! byter jag plats på foo=.. i första koden händer inget alls!
Först lägger du ett script-block som ovillkorligen (alltid) körs (ex i head, alltså före all annan popup-relaterad scriptkod);
<script language="JavaScript" type="text/javascript">
var foo=false;
</script>
Vi kan säga att detta talar om att "fönstret" foo inte har öppnats.
Sedan någon annanstanns på sidan öppnar du ett fönster med;
foo=window.open(...
Det vi gör nu är alltså att vi öppnar ett fönster och lägger referensen till det i variabeln foo.
För att sedan kolla om foo är öppnat kan vi använda;
if(foo){
eller om det är öppnat OCH inte sedan stängt;
if(foo && !foo.closed){
Försvenskning;
var foo=false; // Vi har ett fönster, men det är stängt
foo=window.open(... // Vi har ett fönster som vi öppnar
if(foo && foo.closed){ // Vi hade ett fönster, men det är nu stängt
Observera skillnaden mellan foo.closed (stängt) och !foo.closed (INTE stängt).
Problemet är att du byter sida när du loggar in (kanske inte byter, men laddar om). Detta gör att foo nollställs. Jag skulle föreslå att när du klickar på logga in-knappen så öppnar du popup-fönstret och sköter inloggningsförvarandet därifrån (utan att byta sida i det första fönstret). När du sedan kört login-funktionen i popup-en kan du uppdatera med den sidan som fungerar som chat.