Показать сообщение отдельно
  #9 (permalink)  
Старый 23.05.2010, 13:50
Новичок на форуме
Отправить личное сообщение для Takker Посмотреть профиль Найти все сообщения от Takker
 
Регистрация: 14.05.2010
Сообщений: 4

Думаю, для полноты вопроса мне нужно описать картину вцелом. Итак, есть документ:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
	<title></title>
</head>
<frameset rows="*,0" frameborder="no" framespacing="0" border="0" borderwidth="0">
	<frame src="js_main.php?session=94001bb0033e5783bcfab9c7a9a76dd9" noresize scrolling="auto" marginwidth="0" marginheight="0" id="js_main" name="js_main">
	<frame src="js_writer.php?session=94001bb0033e5783bcfab9c7a9a76dd9" noresize scrolling="no" marginwidth="0" marginheight="0">
</frameset>
</html>

параметр session конечно же приходит извне, проверяется в php и вставляется в src фреймов. Фрейм js_main пуст. Основная работа происходит в невидимом для юзера фрейме js_writer. В нем генерируется следующий код для двух случаев. Первый, если через GET передается только сессия:
<html>
<body>
<script type="text/javascript">
with (parent.js_main.document){
open();
write('<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\">\n');
write('<html>\n');
write('<head>\n');
write('	<title></title>\n');
write('    <meta http-equiv=\"Content-Type\" content=\"text/html; charset=windows-1251\">\n');
write('<script language=\"javascript\">\n');
write('function up()\n');
write('{\n');
write('	scroll(1,10000000);\n');
write('}\n');
write('<'+'/script>\n');
write('</head>\n');
write('<body>\n');
write('line:211 some text <br />');
write('line:212 some text <br />');
write('line:213 some text <br />');
write('line:214 some text <br />');
}
parent.js_main.window.up();
setTimeout('location.replace("js_writer.php?session=94001bb0033e5783bcfab9c7a9a76dd9&last_message=214")',5000);
</script>
</body>
</html>

второй случай возникает только после срабатывания первого (либо после срабатывания самого себя). Когда через GET передается дополнительный параметр last_message
<html>
<body>
<script type="text/javascript">
with (parent.js_main.document){
  write('line:215 some text <br />');
  write('line:216 some text <br />');
}
parent.js_main.window.up();
setTimeout('location.replace("js_writer.php?session=94001bb0033e5783bcfab9c7a9a76dd9&last_message=216")',5000);
</script>
</body>
</html>

Значение строк line генерируется в php - его трогать не будем, так как не работает показанный выше сгенерированный javascript. Как вы поняли - это незамысловатая реализация чата с обновлением раз в 5 секунд. И самое интересное, что в Internet Explorer этот код срабатывает, а вот FireFox не хочет его кушать.. вернее, через пять секунд фрейм не обновляется
Ответить с цитированием