Форум программистов, компьютерный форум, киберфорум
JavaScript
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.97/32: Рейтинг темы: голосов - 32, средняя оценка - 4.97
10 / 10 / 1
Регистрация: 07.06.2010
Сообщений: 124

Устранения мерцания всей страницы при обновлении чата встроенного в нее

25.10.2010, 18:47. Показов 6757. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Ситуация такова: при автоматическом обновлении миничата каждые 5 сек, обновляется вся страничка в которую встроен чат, а также неприемливы мерцания. Необходимо скрыть обновеление страницы, тоесть оновление идет а мерцаний не видно. Вот исходники файлов:

index.php
HTML5
1
2
3
<iframe src="chat.php" width="640" height="415" align="left" hspace="10" vspace="10">
Ваш браузер не поддерживает плавающие фреймы!
</iframe>
chat.php
HTML5
1
2
3
4
5
6
7
8
9
<html>
<head>
<title>Мини Чат!</title>
</head>
<frameset rows="30%,70%">
    <frame name="addmsg" src="addmsg.php">
    <frame name="showmsg" src="showmsg.php">
</frameset>
</html>

showmsg.php
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<html>
<head>
<meta http-equiv="refresh" content="5; url=showmsg.php">
</head>
<body>
<?php
  session_start();
  $id = session_id();
  include "functions.php";
 
  $file = file("messages.txt");
  if ( count( $file ) > 0 ) {
    $file = array_reverse( $file );
    $messages = "";
    foreach($file as $value) {
      $record = explode("¤", trim($value));
      $messages = $messages."<div><font color=orangered><b>".$record[0]."</b></font> <span style='color:grey; font-size: 16px;'>".
      $record[1]."</span><br/>".$record[2]."</div>";
    }
    $messages = make_smiles($messages);
  } else {
    $messages = "<div>Нет сообщений</div>\n";
  }
  echo $messages; 
?>
</body>
</html>
addmsg.php
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
<html>
<head>
 
<?php
session_start();
$nick=$_SESSION['user'];
?>
<script type="text/javascript">
function AddSmile(text) {
  document.forms["addMsg"].elements["message"].value+=text;
  document.forms["addMsg"].elements["message"].focus();
}
 
function PutSmiles() {
  var pointer = "onmouseover=this.style.cursor='pointer'";
  var smiles = ["smiley", "wink", "cheesy", "grin", "angry", "sad", "shocked", "cool", 
  "rolleyes", "tongue", "embarassed", "lipsrsealed", "undecided", "kiss", "cry"];
  var emb = [":)", ";)", ":cheesy:", ":grin:", ":angry:", ":(", ":o", ":cool:", "::)", 
  ":tongue:", ":embarassed:", ":lipsrsealed:", ":-/", ":kiss:", ":cry:"];
  for (i = 0;i < 15; i++) {
    document.write("<img src='images/" + smiles[i] + ".gif' onclick='javascript: AddSmile(\" " + 
    emb[i] + "\");' " + pointer + " alt='" + smiles[i] + "' width='15' height='15' />&nbsp;");
  }
}
 
function CheckMsg(frm)
{
  if(frm.elements["message"].value == "") {
    alert("Введите сообщение");
    return false;
  }
  else
    return true;  
}
</script>
</head>
<body>
<form method="POST" name="addMsg" onSubmit="CheckMsg(this);">
&nbsp;&nbsp;&nbsp;<script type='text/javascript'>PutSmiles()</script><br/>
<textarea name="message" rows="2" cols='60'></textarea><br/>
<input type="submit" value='Добавить'>
<img width="15" height="15" src="./images/refresh.gif" 
OnMouseOver='this.style.cursor="pointer";' alt="Обновить Чат!" 
OnClick="parent.showmsg.location.href = parent.showmsg.location.href;" 
style="position:absolute; top: 5px; right:5px" />
 
 
<?php
if ( isset($_POST['message']) and !empty($_POST['message']) ) {
  if ( filesize( "messages.txt" ) > 1 ) $file = file("messages.txt");
 
  // Добавляем новую запись
  $message = substr( $_POST["message"], 0, 250 );
  $message = htmlspecialchars( trim($message) );
  $message = preg_replace( "#\r?\n#", '<br/>', $message );
  $file[] = $nick."¤".date("[d-m-y H:i:s]")."   <font color=black>".$message." <font>\n";
  // Удаляем старые записи (оставляем только десять последних)
  $cnt = count( $file );
  if ( $cnt > 10 ) {
    for( $i = 0; $i < ($cnt-10); $i++ ) array_shift( $file );
  }     
  // Перезаписываем файл
  if ( $fp = fopen("messages.txt", "w") ) {
    if (flock($fp, LOCK_EX)) {
      foreach ( $file as $msg ) fwrite($fp, $msg);
      flock($fp, LOCK_UN);
    }
    fclose($fp);
  }
  // Обновляем файл, где хранится информация о пользователях on-line
  $file = file( "online.txt" );
  $cnt = count( $file );
  $id = session_id();
  for ( $i = 0; $i < $cnt; $i++ ) {
    $tmp = explode( "|", $file[$i] );
    // была ли запись об этом пользователе?
    if ( $tmp[0] == $id ) $on = $i;   
  }
  if ( isset($on) ) {
    // запись уже была - надо обновить время
    $file[$on] = $id."|".time()."\n";
  } else {
    // записи еще не было, значит добавляем
    $file[] = $id."|".time()."\n";
  }
  if ( $fp = fopen("online.txt", "w") ) {
    if (flock($fp, LOCK_EX)) {
      $c = count($file);
      for ( $i = 0; $i < $c; $i++) fwrite($fp, $file[$i]);
      flock($fp, LOCK_UN);
    }
    fclose($fp);
  }
}
 
?>
 
</body>
</html>
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
25.10.2010, 18:47
Ответы с готовыми решениями:

Как при обновлении формы сохранить введенные в нее данные
Как при обновлении формы сохранить введенные в нее данные . Буду очень благодарен. &lt;form method=post name=&quot;ss&quot;&gt; ...

Как при обновлении формы сохранить введенные в нее данные через переменные
Как при обновлении формы сохранить введенные в нее данные через переменные. &lt;form method=&quot;POST&quot; &gt; &lt;p...

Автозаполнение при обновлении страницы
Добрый день! Я начинающий разработчик пишу свой блог на php, столкнулся с проблемой при вводе данных в форму. Когда данные ушли форма...

10
 Аватар для Vovan-VE
13210 / 6599 / 1041
Регистрация: 10.01.2008
Сообщений: 15,069
25.10.2010, 19:06
Цитата Сообщение от Linnard Посмотреть сообщение
HTML5
1
<meta http-equiv="refresh" content="5; url=showmsg.php">
Вот и всё мерцание. Страница каждый 5 сек заново грузится.
0
10 / 10 / 1
Регистрация: 07.06.2010
Сообщений: 124
25.10.2010, 19:12  [ТС]
Цитата Сообщение от Vovan-VE Посмотреть сообщение
Вот и всё мерцание. Страница каждый 5 сек заново грузится.
это мне понятно, чат и должен обновлятся каждые 5 сек, тоесть страница showmsg.php, но проблема в том что обновляется и вся страница index.php что нужно испрвить.
0
 Аватар для Vovan-VE
13210 / 6599 / 1041
Регистрация: 10.01.2008
Сообщений: 15,069
25.10.2010, 19:23
HTML5
1
<body onload="setTimeout(function(){location.reload();},5000);">
0
10 / 10 / 1
Регистрация: 07.06.2010
Сообщений: 124
25.10.2010, 19:30  [ТС]
Цитата Сообщение от Vovan-VE Посмотреть сообщение
HTML5
1
<body onload="setTimeout(function(){location.reload();},5000);">
Подскажите пожалуйста куда вставить этот код?
0
 Аватар для Vovan-VE
13210 / 6599 / 1041
Регистрация: 10.01.2008
Сообщений: 15,069
25.10.2010, 19:41
Цитата Сообщение от Linnard Посмотреть сообщение
Подскажите пожалуйста куда вставить этот код?
showmsg.php, заменить строку 5.
0
10 / 10 / 1
Регистрация: 07.06.2010
Сообщений: 124
25.10.2010, 20:20  [ТС]
Строку 5 заменил но к сожалению мерцание не исчезло...

Добавлено через 34 минуты
Цитата Сообщение от Vovan-VE Посмотреть сообщение
showmsg.php, заменить строку 5.
Строку 5 заменил но к сожалению мерцание не исчезло...
0
CEO
Эксперт С++
 Аватар для Alligieri
2258 / 1248 / 57
Регистрация: 16.03.2009
Сообщений: 3,588
26.10.2010, 02:42
Linnard, а вы
Цитата Сообщение от Linnard Посмотреть сообщение
<meta http-equiv="refresh" content="5; url=showmsg.php">
потерли?
0
Заблокирован
26.10.2010, 09:12
может стОит почитать о технологии AJAX?
0
10 / 10 / 1
Регистрация: 07.06.2010
Сообщений: 124
26.10.2010, 11:38  [ТС]
Цитата Сообщение от Dzhej-Dzhej Посмотреть сообщение
может стОит почитать о технологии AJAX?
Все говорят что именно с помощью AJAX єто можно реализовать, но как?
0
Заблокирован
26.10.2010, 11:53
я не силен в веб-технологиях
можно посмотреть на форуме через поиск по ключевому слову ajax
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
26.10.2010, 11:53
Помогаю со студенческими работами здесь

Показать id при обновлении страницы
Есть кнопка, нажимая на неё меняется URl без перезагрузки $('.knopka').click(function(event){ url = '?id=1'; ...

Переадресация при обновлении страницы
Добрый день. Есть две страницы. На одной происходит указание имени и e-mail. После нажатия на кнопку Submit - происходит перенаправление...

Дублирует при обновлении страницы
При обновление страницы дублирует в базу сообщение &lt;?php include (&quot;config/conf.php&quot;);?&gt; &lt;?php $res =...

как сделать чтобы при при обновлении страницы (header('location .');) попадать на ту же позицию
Например у меня есть длинный список записей, под каждой записью кнопка удалить, когда нажимаешь на нее, то происходит удаление записи и...

Дублирование тикета из бд при обновлении страницы
У меня есть личный кабинет игрового сервера с сапортом, при обновлении страницы с тикетом последнее сообщение в нем дублируется или сам...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru