Думаю, для полноты вопроса мне нужно описать картину вцелом. Итак, есть документ:
<!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 не хочет его кушать.. вернее, через пять секунд фрейм не обновляется