Обновление чата посредством JavaScript

AlexiN

New member
Регистрация
29.01.2005
Сообщения
23
Реакции
0
Баллы
1
Возраст
40
Местоположение
Purdoshki
И сразу прошу о помощи. Хочу сделать чат, и по ходу столкнулся с такой проблемой –
Нужно сделать что бы окно с сообщениями не моргало т.е. не обновлялось как таковое.Проблему решил устранить с помощью дополнительного фрейма нулевого размера, который собственно и будет обновляться, а данные из него будут с помощью Ява скрипта передаваться в окно сообщений. Если реализовывать это вот так
Код:
<script LANGUAGE="JavaScript">
<!--
   function update(){
         document.location.href="chat_load.asp"

   }
setTimeout("update()",<%=Session("RefreshRate")%>);
//-->
</SCRIPT>
//здесь RefreshRate – передается из формы и есть время задержки обновления (с этим нет проблем) Обновляю страницу chat_load.asp
……….
Здесь скрипт для добавления сообщения в базу (для чата использую Ms Access)
С этим тоже нет проблем, и этого вам лучше не видеть, к делу это не относиться.
………..
А вот теперь делаю выборку последних 22 членов из базы и создаю из них массив mess

<%
sql1 = "SELECT TOP 1  ID_M  FROM MSG order by ID_M DESC "
set rs1 = chat.Execute(sql1)
max_chat=rs1("ID_M")
min_chat=max_chat-22 %>
Этим определил максимальное и минимальное ID сообщений…
<%
sql = "SELECT MSG, ID_M, USER_ID, DATA_M FROM MSG where ID_M>"& min_chat&" order by ID_M"
set rs = chat.Execute(sql)
%>
сделал выборку из базы всех значений больше минимального…
Надеюсь, идея ясна, теперь самое непонятное –
Создаю массив из 22 членов-
<script LANGUAGE="JavaScript">
<!--
var mess= new Array(21)
<%
n=0
Do while NOT (rs.EOF or rs.EOF)
%>
заполняю массив значениями (это как раз все сообщения ID которых больше минимального -  
mess[<%=n%>]="- <strong><%=rs("USER_ID")%></strong>(<i class=data><% =rs("DATA_M")%></i>):<%=rs("MSG")%><br>"

<% 
rs.MoveNext
n=n+1
Loop %>
А вот теперь для примера передам последний член массива в фрейм chat -
top.chat.document.write(mess[21])

сообщение естественно передалось, но!
//-->
</SCRIPT>

Оно будет передаваться при каждом обновлении, то есть сообщение будет просто дублироваться. Как можно проверить член массива mess[21] и сравнить его с тем, что уже отправлен в фрейм? И еще как можно поместить сообщение в слой находящийся в фрейме?
Естественно будут передаваться все члены массива, поэтому проверку необходимо делать всех членов и если есть разница, добавлять новые и удалять такое же количество старых записей в фрейме сообщений.
Надеюсь, вопрос понятен и вы мне поможете!
И еще скорее всего фрейм сообщений (не скрытый фрейм) при загрузке уже будет содержать 22 члена массива, состоящих из последних сообщений, и уже потом будет обновляться из невидимого фрейма…
Какие идеи?
 

B.Boy

Member
Регистрация
20.07.2005
Сообщения
65
Реакции
0
Баллы
6
Возраст
37
Местоположение
Пенза-City
Сайт
www.politex.pnz.ru
ДЫк епрст возьми какой-нить чат да и посматри, как там это реализовано.. посмотри несколько скриптов... моэет в голову стукнет какая-нить новая идейя ;)
 
198 083Темы
635 054Сообщения
3 618 393Пользователи
Testtesttest1111111Новый пользователь
Верх