Avatar billede medievil Nybegynder
20. februar 2003 - 15:24 Der er 27 kommentarer og
1 løsning

3D chat - ASP/Javascript !

Hejsa !

Jeg er temmelig god til ASP, men ikke særlig god til javascript !

Så for ikke så lang tid siden, satte jeg et spørgsmål op om hvordan jeg kunne få min chat til ikke at blinke ! Personen der svarede skrev noget indviklet noget !

Jeg har forsøgt at gøre det, og jeg ved det ikke er rigtigt og jeg vidste det ikke ville blive rigtigt da jeg begyndte

Men jeg tænkte i kunne hjælpe mig !

Den lange kode:

<%
'//Kontakt til Chat-Database
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "PROVIDER=MSDASQL;DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("../../../database/db.mdb") & ";UID=admin;PWD=;"
Set rs = Server.CreateObject("ADODB.RecordSet")
strSQL = "Select * From chat where brugernavn = '" & Session("brugernavn") & "'"
rs.Open strSQL, Conn, 1, 3

if rs.EOF then
  Response.Redirect("fejl.asp?error=Du er blevet smidt af. Prøv at tryk på genstart")
end if

  '//ned tælling!
    if rs("hidden") <> "0" then
      rs("hidden") = rs("hidden") - 1
      rs.Update
    end if

rs.Close
Set rs = Nothing
Conn.Close
set Conn = Nothing

Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & server.MapPath("../../../database/db.mdb")
id = Request.QueryString("id")
set rs = Server.CreateObject("ADODB.Recordset")
rs.Open "SELECT * FROM room WHERE Id=" & id, Conn, 1, 3

Session("rum") = rs("Id")
%>
document.write("<DIV id=roomBG style="z-index: 100; background-repeat: repeat; background-attachment: scroll; left: -3; width: 383; position: absolute; top: 0; height: 354; background-position: 0% 50%" align=center name="roomBG">");
document.write("<img border="1" src="<%= rs("BG") %>" align="left"></DIV>");
document.write("<DIV id=roomBG style="z-index: 100; background-repeat: repeat; background-attachment: scroll; left: 3; width: 383; position: absolute; top: 0; height: 354; background-position: 0% 50%" align=left name="roomBG">");
document.write("<SPAN style="FILTER: dropshadow(color:black,offy:1,offx:1); WIDTH: 100%; COLOR: white"><font face="Arial" size="1"><%= rs("titel") %> # <%= rs("id") %></font></SPAN></DIV>");
<%
'//Database forbindelse
Set connect = Server.CreateObject("ADODB.Connection")
Connect.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("../../../database/db.mdb")
sql = "select * From ting where sted = '" & Session("roomID") & "' ORDER BY id desc"
Set rs = Server.CreateObject("ADODB.Recordset")
set rs = Connect.execute(SQL)

count = 99
While not rs.eof and count > 0
count = count -1
%>
document.write("<DIV id=ting style="z-index: 100; background-repeat: repeat; background-attachment: scroll; left: <%= rs("left") %>; width: 48; position: absolute; top: <%= rs("top") %>; height: 94; background-position: 0% 50%" align=center name="ting">");
document.write("<img border="0" src="gfx/ting/<%= rs("grafik") %><%= rs("model") %>.gif"></DIV>");
<%
rs.MoveNext
Wend
rs.Close
Set rs = Nothing
Connect.Close
set Connect = Nothing
%>
<%
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & server.MapPath("../../../database/db.mdb")
id = Request.QueryString("id")
set rs = Server.CreateObject("ADODB.Recordset")
rs.Open "SELECT * FROM room WHERE ID=" & id, Conn, 1, 3

Session("roomID") = rs("ID")
%>
document.write("<DIV id=roomBG style="z-index: 100; background-repeat: repeat; background-attachment: scroll; left: -3; width: 383; position: absolute; top: 0; height: 354; background-position: 0% 50%" align=center name="roomBG">");
document.write("<map name="FPMap0">");
<% if session("status") = "Admin" then %>
document.write("<!--#include file="felter.asp" -->");
<% else %>
<%= rs("code") %>
<% end if %>
document.write("</map><img border="1" src="http://www.chive.dk/mandtest/chat/gfx/none.gif" usemap="#FPMap0" align="left" width="379" height="352"></DIV>");
<%
'//Database forbindelse
Set connect = Server.CreateObject("ADODB.Connection")
Connect.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("../../../database/db.mdb")
sql = "select * From chat where roomid = " & Request.QueryString("id")
Set rs = Server.CreateObject("ADODB.Recordset")
set rs = Connect.execute(SQL)

count = 50
While not rs.eof and count > 0
count = count -1

session("kon") = rs("kon")
%>
document.write("<DIV id=humor style="z-index: 100; background-repeat: repeat; background-attachment: scroll; left: <%= rs("left") %>; width: 48; position: absolute; top: <%= rs("top") %>; height: 94; background-position: 0% 50%" align=center name="bruger">");
document.write("<img border="0" src="gfx/face3.gif"></DIV>");
document.write("<DIV id=humor style="z-index: 100; background-repeat: repeat; background-attachment: scroll; left: <%= rs("left") %>; width: 48; position: absolute; top: <%= rs("top") %>; height: 94; background-position: 0% 50%" align=center name="bruger">");
document.write("<br><br><br><br><br><font color="#FFFFFF" size="1" face="Arial"><SPAN style="FILTER: dropshadow(color:black,offy:1,offx:1); WIDTH: 100%; COLOR: white"><%= rs("brugernavn") %></SPAN></font></DIV>");
<%
rs.MoveNext
Wend
rs.Close
Set rs = Nothing
Connect.Close
set Connect = Nothing
%>
<%
'//Database forbindelse
Set connect = Server.CreateObject("ADODB.Connection")
Connect.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("../../../database/db.mdb")
sql = "select * From chat where roomid = " & Request.QueryString("id")
Set rs = Server.CreateObject("ADODB.Recordset")
set rs = Connect.execute(SQL)

count = 50
While not rs.eof and count > 0
count = count -1
%>
<%
  if rs("besked") <> "" then
  if rs("hidden") <> "0" then
%>
document.write("<DIV id=Tale style="z-index: 100; background-repeat: repeat; background-attachment: scroll; left: <%= rs("left") %>; position: absolute; top: <%= rs("top") %>; height: 128; width: 126; background-position: 0% 50%" align=center name="Tale">");
document.write("<table border="0" width="86%">");
document.write("<tr>");
document.write("<td width="336%"><font color="#000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font></td>");
document.write("<td width="78%"><table border="0" width="8%" onmousedown=this.filters.alpha.opacity=65 onmouseover=this.filters.alpha.opacity=65 style="FILTER: alpha(opacity=65)"  onmouseout=this.filters.alpha.opacity=65>");
document.write("<tr>");
document.write("<td width="100%">");
document.write("<table cellSpacing="0" cellPadding="0" align="center" border="0" width="100%" height="1">");
document.write("<tr>");
document.write("</tr>");
document.write("</table>");
   
document.write("<table width="100%" border="0" cellspacing="0" cellpadding="3" height="1">");
document.write("<tr>");
document.write("<td background="gfx/bobbel_top.gif">");
   
document.write("<table width="100%" border="0" cellspacing="0" cellpadding="3" height="1">");
document.write("<tr>");
document.write("<td>");
document.write("</tr>");
document.write("</table>");


document.write("</tr>");
document.write("</table>");

document.write("<table border="0" cellspacing="0" cellpadding="0" width="100" align="center" height="19">");
document.write("<tr>");
document.write("<td width="1" valign="top" bgcolor="#000000"><font size="1" face="Tw Cen MT Condensed" color="#000000"><img src="images/intet.gif" width="1"></font></td>");
document.write("<td width="100%" valign="top" bgcolor="#808080" background="gfx/bobbel_BG.gif">");
document.write("<table width="100%" border="0" cellspacing="4" cellpadding="0">");
document.write("<tr>");
document.write("<td width="100%"><font face="Arial" size="1" color="#000000"><%= rs("besked") %></font></td>");
document.write("</tr>");
document.write("</table>");
document.write("</td>");
document.write("<td width="1" valign="top" bgcolor="#000000"><font size="1" face="Tw Cen MT Condensed" color="#000000"><img src="intet.gif" width="1"></font></td>");
document.write("</tr>");
document.write("</table>");

document.write("<font face="Verdana" size="1">");
document.write("<table width="100%" border="0" cellspacing="0" cellpadding="3" height="8">");
document.write("<tr>");
document.write("<td background="gfx/bobbel_bund.gif">");
   
document.write("<table width="100%" border="0" cellspacing="0" cellpadding="3" height="1">");
document.write("<tr>");
document.write("<td height="1">");
document.write("</tr>");
document.write("</table>");
document.write("</tr>");
document.write("</table>");


document.write("</td>");
document.write("</tr>");
document.write("</table>");
document.write("</table>");
document.write("</DIV>");
<% end if %>
<% end if %>
<%
rs.MoveNext
Wend
rs.Close
Set rs = Nothing
Connect.Close
set Connect = Nothing
%>

Ved det ser uprof ud !
Avatar billede olebole Juniormester
20. februar 2003 - 15:32 #1
<ole>

Hvad laver du dog med alt det document.write() ... der vist i øvrigt ikke fungerer?

/mvh
</bole>
Avatar billede medievil Nybegynder
20. februar 2003 - 15:52 #2
Jeg ville gøre så chatten ik blinker ! Det er sikkert helt vildt forkert !

Ville bruge dette til at vise chatten:

<SCRIPT language=JavaScript src="rum2.asp"
type=text/javascript>
</SCRIPT>
Avatar billede medievil Nybegynder
20. februar 2003 - 15:54 #3
Altså når den refresher så blinker den !
Avatar billede olebole Juniormester
20. februar 2003 - 16:00 #4
Prøver igen: Hvad laver du dog med alt det document.write()?
Avatar billede medievil Nybegynder
20. februar 2003 - 16:03 #5
Jeg ville lave en side (rum2.asp) hvor den hentet siden uden at bruge det normale refresh så den blinker !

Også tænkte jeg at hvis jeg skrev document.write så ville det virke ligesom en javascript :o) Men det virker ikke !
Avatar billede olebole Juniormester
20. februar 2003 - 16:08 #6
Nejnej ... du har fat i den helt forkerte ende.
Du skal lave hele dit chatroom i en side. Derefter skal du lave en skjult iframe med en asp-side, der refreshes med et vist interval. Denne side skal så kun hente sidste besked og skrive den ind med noget innerHTML i chatsiden.
Avatar billede medievil Nybegynder
20. februar 2003 - 16:18 #7
Har du en fil med et eksempel?
Avatar billede olebole Juniormester
20. februar 2003 - 16:27 #8
Nej ... du er nødt til at sætte dig grundigt ind i JavaScript eller sætte dig ned ved siden af en person, der god til det og lave det sammen med vedkommende. Det kan du ikke løse over Eksperten med dit nuværende kendskab til JS.
I en 3D-chat udgør backend-arbejdet højest 10% af den samlede kode ... det er projekt, der langt overstiger din kunnen - no offence.
/mvh
Avatar billede medievil Nybegynder
20. februar 2003 - 16:48 #9
jeg kender ingen der kan Javascript og jeg har stort set programmert det gundlæggende at chatten, i ASP !
Avatar billede olebole Juniormester
20. februar 2003 - 17:04 #10
Jamen, det er jo netop, hvad jeg siger ... det er langt det mindste problem. Backend'en er jo klaret på en times tid (inklusiv ryge- og kaffepause). Først derefter begynder selve det substantielle kode-arbejde  :)
/mvh
Avatar billede medievil Nybegynder
20. februar 2003 - 17:14 #11
Okay ! Jeg tænkte på noget andet så !

Kan man få et javascript som gør at når de refresher bliver siden først vist når den er færdig, og imens den går ind på den er det stadig den gamle side der bliver vist !
Avatar billede olebole Juniormester
20. februar 2003 - 17:17 #12
Det skal du også lave med en skjult iframe, der skriver ind i siden med innerHTML på onload
Avatar billede medievil Nybegynder
20. februar 2003 - 17:26 #13
Findes der ingen simpel måde ? :o)
Avatar billede olebole Juniormester
20. februar 2003 - 17:28 #14
Jamen, det er da ganske simpelt ... så simpelt, som det kan gøres
Avatar billede medievil Nybegynder
20. februar 2003 - 23:42 #15
Ham der hjalp mig før sagde jeg kunne gøre det sådan her:

<div id="divChat">
<iframe src="rum2.asp" name="hentChat"></iframe>
</div>
<script>
function
visChat(newBody) { 
document.getElementById("divChat").innerHTML=newBody.innerHTML;
}
<script></script>
</body>

og i rum2.asp skulle bodyen være:
<body onload="parent.visChat(this)">

Jeg tror ik jeg har gjort det rigtigt ! det virker ik!
Avatar billede medievil Nybegynder
20. februar 2003 - 23:44 #16
Kan de lade sig gøre sådan?

Når jeg prøver skriver den:

undefined

by the way <script> er slettet !
Avatar billede olebole Juniormester
21. februar 2003 - 00:46 #17
Det er ikke helt korrekt. Funktionen skal se sådan ud:

<script type="text/JavaScript">
function visChat(newBody) { 
  document.getElementById("divChat").innerHTML=newBody.document.body.innerHTML;
}
</script>

Det hjælper dig stadig kun det første, lille skridt mod en 3D-chat.
Og husk, du _kun_ skal hente (og indskrive) den sidste besked. Ellers overbelaster du lynhurtigt serveren.

I det hele taget er ASP/JS slet ikke egnet til chats og slet ikke 3D-chats. Skal det være noget, der fungerer bare nogenlunde, bør man skrive en speciel web-server til formålet.

Skal det endelig gøres i et scripting-sprog under IIS eller Apache, skal du være ekstremt omhyggelig med at effektivisere og optimmere din kode - og glem _alt_ om Access. Det er en enkeltbruger-DB, der ikke er egnet til webbrug - og til chat-formål er den komplet håbløs.
Avatar billede medievil Nybegynder
21. februar 2003 - 18:32 #18
Jeg ved det er noget svært noget jeg er begyndt på, men jeg gør det jeg har lyst til !

og jeg ved Acces ikke egner sig til det !

Tak for hjælpen !

Du kan se den på www.chive.dk når den er færdig og hvis du har lyst !
Avatar billede medievil Nybegynder
21. februar 2003 - 19:26 #19
Den gider ikke opdatere !
Avatar billede medievil Nybegynder
21. februar 2003 - 19:27 #20
getchat ser sådan ud:
<head>
</head>
<div id="divChat">
<iframe src="rum2.asp?id=<%= Request.QueryString("id") %>" name="hentChat"></iframe>
</div>
<script type="text/JavaScript">
function visChat(newBody) {
document.getElementById("divChat").innerHTML=newBody.document.body.innerHTML;
}
</script>

og så er der refresh i rum2.asp !
Avatar billede olebole Juniormester
21. februar 2003 - 19:45 #21
Det er ikke så mærkeligt  :)

<html>
<head>
<script type="text/JavaScript">
function visChat(newBody) {
document.getElementById("divChat").innerHTML=newBody.document.body.innerHTML;
}
</script>
</head>
<body>

<div id="divChat"></div>

<iframe src="rum2.asp?id=<%= Request.QueryString("id") %>" name="hentChat" style="position:absolute;left:0px;top:0px;width:1px;height:1px;visibility:hidden;"></iframe>

</body>
</html>
Avatar billede olebole Juniormester
21. februar 2003 - 19:48 #22
Du kunne også gemme iframe'en sådan:
  <iframe src="rum2.asp?id=<%= Request.QueryString("id") %>" name="hentChat" style="display:none;"></iframe>
... men den anden er bedre, da den virker i flere browsere. Visse browsere har svært ved at udføre stuntet, når display bliver sat til none.
Avatar billede tajnefilm Nybegynder
22. februar 2003 - 16:27 #23
Da der i Javascript, findes en funktion der integreres sammen med ASP (DontBlink), kan du indsætte følgende i <HEAD>-delen af dit ASP-dokument.:

<script>
parent.ChatFrame.DontBlink = 'true';

if (parent.chatFrame.DontBlink = 'false') {
  cancelBubble = 'true';
} else {
  cancelBubble = 'false';

</script>
Avatar billede medievil Nybegynder
23. februar 2003 - 16:19 #24
den kan ikke finde ChatFrame ?

skal den laves om?
Avatar billede medievil Nybegynder
23. februar 2003 - 16:32 #25
Det er ligemeget med:

<script>
parent.ChatFrame.DontBlink = 'true';

if (parent.chatFrame.DontBlink = 'false') {
  cancelBubble = 'true';
} else {
  cancelBubble = 'false';

</script>

Fordi oleboles metode virkede, men når man trykker på et felt åbner den ryk.asp

Den åbner i en iframe også men det går helt i kage !
Avatar billede medievil Nybegynder
23. februar 2003 - 21:51 #26
Jeg har fundet en anden løsning !

jeg laver et nyt sprøgsmål på hvordan man tager lyden af refresh !
Avatar billede medievil Nybegynder
23. februar 2003 - 21:51 #27
Lukker !
Avatar billede olebole Juniormester
24. februar 2003 - 00:00 #28
Jamen, så må man da håbe, der er nogen, der gider bruge tid på at hjælpe dig
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester