Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Общие вопросы > Плавное обновление фрейма


Автор: Scream 30.7.2006, 12:42
У меня есть файл chat.php, где находится вся конструкция фреймов:

Код

<frameset rows="*,70" border="0">
<frameset cols="*,190">
<frameset rows="60,*">
<frame src="top.php" scrolling="no">
<frame src="text.php#end" name="WinText">
</frameset>
<frame src="mans.php" name="WinMan">
</frameset>
<frame src="textenter.php" scrolling="no" name="textenter">
</frameset>


Фрейм, под именем "WinText" и выводит сообщения чата.
Нужно, чтобы не мигал фрейм под именем "WinMan" и "WinText".
Скажите как это сделать.

Слышал, что это делается через невидимый фрейм, но как именно, не понял.
Юзал поиск по форуму, но ничего полезного не нашёл. 

Автор: Scream 4.8.2006, 15:56
UP

Автор: Str!pe 5.8.2006, 11:25
А за счет чего они у тебя мигают?

Автор: Scream 5.8.2006, 11:54
Цитата(Stripe @ 5.8.2006,  11:25)
А за счет чего они у тебя мигают?

Они у всех мигают.
Я модернизирую скрипт одного чата и там при обновлении фреймы мигают - это раздражает. Вообще чаты делают с плавным обновлением, с помощью невидимого фрейма, но в этом скрипте такого нет.
Вот я и хочу сам это сделать, но не знаю как.

Автор: Illuminaty 5.8.2006, 11:57
Делай при помощи AJAX

Автор: Scream 5.8.2006, 14:25
Цитата(Illuminaty @ 5.8.2006,  11:57)
Делай при помощи AJAX

Нужно именно с помощью невидимого фрейма.
Помогите сделать!  smile 

Автор: Scream 10.8.2006, 10:23
Помогите!!  smile 

Автор: Illuminaty 10.8.2006, 10:35
Слишком мало информации для решения проблемы.
Тем более, что к верстке это имеет опосредственное отношение. Лучше этот вопрос задать в разделе о javascript, выложив скрипты, отвечающие за работу чата.

Модератор: тема перенесена из Вёрстка веб-сайтов

Автор: S.A.P. 10.8.2006, 10:59
Допустим невидимый фрейм - null_frame.

Тогда делаешь обновление через какой - нибудь интервал:
Код

setInterval(function () {null_frame.contentWindow.location.reload()}, 3000);


А на onload фрейма висит какой - нибудь обработчик, дёргающий от туда текст и вставляющий его в DIV с сообщениями.
Код

null_frame.contentWindow.onload = function ()
{
    div.innerHTML = null_frame.contentWindow.document.body.innerHTML;
}

Автор: Scream 10.8.2006, 11:20
Цитата(S.A.P. @ 10.8.2006,  10:59)
Допустим невидимый фрейм - null_frame.

Тогда делаешь обновление через какой - нибудь интервал:
Код

setInterval(function () {null_frame.contentWindow.location.reload()}, 3000);


А на onload фрейма висит какой - нибудь обработчик, дёргающий от туда текст и вставляющий его в DIV с сообщениями.
Код

null_frame.contentWindow.onload = function ()
{
    div.innerHTML = null_frame.contentWindow.document.body.innerHTML;
}

Невидимый фрейм без разницы куда вставлять?
Вот так можно сделать?
Код

<frameset rows="*,70" border="0">
<frameset cols="*,190">
<frameset rows="60,*">
<frame src="top.php" scrolling="no">
<frame src="text.php#end" name="WinText">
</frameset>
<frame src="mans.php" name="WinMan">
</frameset>
<frame src="textenter.php" scrolling="no" name="textenter">
<frame src="null.php" scrolling="no" name="null_frame" noresize>
</frameset>

Автор: Scream 10.8.2006, 17:00
Код

setInterval(function () {null_frame.contentWindow.location.reload()}, 3000);

Куда именно вставить нужно?


Автор: Scream 11.8.2006, 16:38
Делаю так:

enter.php - файл с фреймами

Код

<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=windows-1251">
<title></title>
<script language="JavaScript">
setInterval(function () {null_frame.contentWindow.location.reload()}, 3000);
</script>
</head>
<frameset rows="*,70" border="0">
<frameset cols="*,190">
<frameset rows="60,*">
<frame src="top.php" scrolling="no">
<frame src="text.php#end" name="WinText">
</frameset>
<frame src="mans.php" name="WinMan">
</frameset>
<frame src="textenter.php" scrolling="no" name="textenter">
<frame src="null.php" scrolling="no" name="null_frame">
</frameset>
</html>


null.php

Код

<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=windows-1251">
<title></title>
</head>
<body>
<script language="JavaScript">
parent.WinText.p.innerHTML += "<?=echo_text(&$row)?>";
</script>
</body>
</html>


text.php

Код

<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=windows-1251">
<title></title>
<meta http-equiv="Pragma" content="no-cache">
<meta http-equiv="Expires" content="-1">
<meta http-equiv="Cache-Control" content="no-cache">
</head>
<body>
<div id="p"></div>
</body>
</html>


Но не работает. Посмотрите, правильно ли я делаю...

Автор: Scream 12.8.2006, 08:36
UP!

Автор: Scream 13.8.2006, 19:09
Фтопку невидимый фрейм!

Помогите сделать с помощью http://kropp.spb.ru/docs/prototype/. (Использование класса Ajax.Updater)

Автор: Scream 14.8.2006, 10:18
 smile 

Автор: Scream 17.8.2006, 10:30
Народ, поможете или нет с AJAX'ом разобраться?
Я могу даже выложить архив со скриптом чата, поставите у себя на локалхосте и посмотрите как лучше сделать.

Тема может быть закрыта, я всё сделал.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)