[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Как лучше обновить фрейм?
program90
Как лучше обновить фрейм? Через генерирование события нажатия скрытой ссылки eventcreate? или через вызов forms[0].submit() скрытой формы в другом фрейме? Подскажите, если есть еще способы.
Спасибо,



Спустя 30 минут, 19 секунд (24.11.2010 - 17:35) sergeiss написал(а):
Обновление идет по какому событию?

Спустя 26 минут, 53 секунды (24.11.2010 - 18:02) vital написал(а):
Цитата
есть еще способы.

Забить на фреймы и использовать нормальный ajax.

Спустя 19 минут, 28 секунд (24.11.2010 - 18:21) sergeiss написал(а):
Цитата (vital @ 24.11.2010 - 19:02)
Забить на фреймы и использовать нормальный ajax.

Не согласен с категоричностью данного утверждения smile.gif Потому что тут многое зависит от того, что надо сделать.
Где-то аякс будет верным решением, а где-то и простое автообновление фрема сгодится. Можно и по нажатию на кнопку...

НО!!! Всё зависит от того, что же надо в итоге получить.

Спустя 8 минут, 39 секунд (24.11.2010 - 18:30) Basili4 написал(а):
аякс более часто пригождается нежели фрейм. и как то более удобный.

Спустя 7 минут, 7 секунд (24.11.2010 - 18:37) DySprozin написал(а):
зато с фреймами меньше запарки по поводу кроссплатформенности (;

Спустя 3 минуты, 39 секунд (24.11.2010 - 18:41) vital написал(а):
Цитата
зато с фреймами меньше запарки по поводу кроссплатформенности (;

С чего это вдруг?
Разница в одном ифе. пфф. Зато с фреймами _много_ запарки по поводу кроссбраузерности. А барузеров куда больше чем ОС=)

Спустя 43 минуты, 54 секунды (24.11.2010 - 19:25) DySprozin написал(а):
;;Разница в одном ифе
просто мну несколько этот код пугает:

function createRequestObject() {
if (typeof XMLHttpRequest === 'undefined') {
XMLHttpRequest = function() {
try { return new ActiveXObject("Msxml2.XMLHTTP.6.0"); }
catch(e) {}
try { return new ActiveXObject("Msxml2.XMLHTTP.3.0"); }
catch(e) {}
try { return new ActiveXObject("Msxml2.XMLHTTP"); }
catch(e) {}
try { return new ActiveXObject("Microsoft.XMLHTTP"); }
catch(e) {}
throw new Error("This browser does not support XMLHttpRequest.");
};
}
return new XMLHttpRequest();
}


он действительно кроссплатформенный или есть подводные камни? (;

Спустя 3 минуты, 49 секунд (24.11.2010 - 19:29) vital написал(а):
Цитата
он действительно кроссплатформенный

Он не кросс платформенный. Он кроссбраузерный между IE. И нафиг нужный по сути. Да и вообще - юзайте фреймворки по типу jQuery, Там все сводится к $.Ajax()
или там $.post(),$.get();

Спустя 3 минуты, 38 секунд (24.11.2010 - 19:32) vital написал(а):
Вот этого вам хватит выше крыши
пс. Кто вам вообще рассказл про _не_ кроссплатформенность аякса? Все зависит от браузера, а не от ОС.

Спустя 2 часа, 24 минуты, 37 секунд (24.11.2010 - 21:57) DySprozin написал(а):
;;Он не кросс платформенный. Он кроссбраузерный
футы, надо же так опечататься laugh.gif

;;пс. Кто вам вообще рассказл про _не_ кроссплатформенность аякса?
ну да, опечатался, виноват, отсижу, отработаю, отслужу rolleyes.gif

;;Да и вообще - юзайте фреймворки по типу jQuery,
;;Там все сводится к $.Ajax() или там $.post(),$.get();
у мну на них стойкий рвотный рефлекс: как увижу, так блеват и кидат (;

Спустя 1 минута, 2 секунды (24.11.2010 - 21:58) DySprozin написал(а):
;;Он кроссбраузерный между IE. И нафиг нужный по сути.
хм... а почему нафиг нужный? (; разве кроссбраузерность не пострадает? (;

Спустя 9 минут, 34 секунды (24.11.2010 - 22:07) program90 написал(а):
Нужно чтобы в чате, каждую секунду обновлялся фрейм с текстом сообщений.

Спустя 5 минут, 6 секунд (24.11.2010 - 22:13) sergeiss написал(а):
Цитата (program90 @ 24.11.2010 - 23:07)
Нужно чтобы в чате, каждую секунду обновлялся фрейм с текстом сообщений.

2 варианта:
- сделать iframe и в том файле, который там будет, установить рефреш через указанное время; только не 1 секунду лучше, а пореже. Иначе читать будет плохо. И вообще, такой вариант хорош для редких обновлений, раз за много минут.
- использовать аякс; в данном случае он лучше будет. Надо только не забывать удалять старые строки.

Спустя 10 часов, 59 минут, 19 секунд (25.11.2010 - 09:12) Michael написал(а):
<iframe src="xxx2.php" width="50%" height="300" name="chat">
</iframe>


function refifr(){
window.frames['chat'].location = "xxx2.php";
}
setInterval(refifr, 1000);

Спустя 41 минута, 12 секунд (25.11.2010 - 09:53) sergeiss написал(а):
Michael - а зачем так мудрёно? Я имел ввиду более простой вариант :) Одна строка в начале файла xxx2.php решит всё. Обновление через 5 секунд:
header( "refresh: 5" );

Спустя 8 часов, 32 минуты, 54 секунды (25.11.2010 - 18:26) program90 написал(а):
Это код фрейма generalwindow.


<html>
<head>
</head>
<body>
<form
id="form1" action="http://some.com/some.php" method="post" target="_self">
</form>
<script
type="text/javascript">
//document.getElementById('form1').submit();
parent.frames['generalwindow'].document.getElementById("form1").submit();
setTimeout('parent.generalwindow.location.reload();', 5000);
</script>
</body>
</html>



submit() почему-то срабатывает только один раз. А потом не работает.
И еще: почему такой вариант обращения к форме в фрейме как в закомментированной строчке, не работает? В одном учебнике написано, что внутри фрейма к нему можно обращаться как к отдельным window и document.
Заранее спасибо

Спустя 9 минут, 11 секунд (25.11.2010 - 18:35) program90 написал(а):
Так тоже не работает


<html>
<head>
</head>
<body>
<form
id="form1" action="http://some.com/some.php" method="post" target="_self">
</form>
<script
type="text/javascript">
//document.getElementById('form1').submit();

setInterval('parent.frames['generalwindow'].document.getElementById("form1").s ubmit();', 4000);
</script>
</body>
</html>


Спустя 5 минут, 57 секунд (25.11.2010 - 18:41) program90 написал(а):
Это текст главного файла, в котором просто обновляется фрейм без отправки формы. Тоже не работает. В фрейме проверочная функция выводящая время. Время выводиться только один раз.

 
<frameset rows="75%, 25%">
<frameset
cols="70%,20%">
<div
id="backgr">
<img
id="backgr" src="sky.jpg" width="100%" hight="100%"/>
</div>
<div
id="frames">
<frame
src="general_window.html" name="generalwindow" noresize>
<frame
src="user_list.html" name="userlist" noresize>
</div>
</frameset>
<frame
src="text_input.html" name="textinput" noresize>
</frameset>
<script>
function
refresh()
{
window.frames['generalwindow'].location = "general_window.html";
}

setInterval(refresh, 2000);
</script>





Код фрейма generalwindow:


<html>
<head>
</head>
<body>
<form
id="form1" action="some.php" method="post" target="_self">
</form>
<script
type="text/javascript">
//document.getElementById('form1').submit();
//setInterval('parent.frames['generalwindow'].document.getElementById("form1"). submit();', 4000);

var d = new Date();
parent.frames['generalwindow'].document.write(d.getTime());
</script>
</body>
</html>


Спустя 4 минуты, 52 секунды (25.11.2010 - 18:46) sergeiss написал(а):
program90 - ты на форуме уже давно, а код в тэги оформлять так и не научился? Нечитабельно же нифига!

И чем тебе не нравится "мой" вариант?
header( "refresh: 5" );

Спустя 46 минут, 37 секунд (25.11.2010 - 19:33) program90 написал(а):
Сейчас проверю.
Но нужно разобраться почему не работает тот код

Спустя 1 час, 55 минут, 38 секунд (25.11.2010 - 21:28) program90 написал(а):
Все равно не работает. Фрейм обновляется, но submit() выполняется только один раз. А после следующих обновлений, не работает.


<html>
<head>
<meta
http-equiv="refresh" content="3">
<meta
http-equiv="Pragma" content="no-cache">
</head>
<body>
<form
id="form1" action="some.php" method="post" target="_self">
</form>
<script
type="text/javascript">
//document.getElementById('form1').submit();
parent.frames['generalwindow'].document.getElementById("form1").submit();
var d = new Date();
parent.frames['generalwindow'].document.write(d.getTime());
</script>
</body>
</html>

Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.