Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > JavaScript, Ajax
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.01.2011, 11:53   #1
Gym
Новичок
Джуниор
 
Регистрация: 23.01.2011
Сообщений: 2
По умолчанию Получение данных из обновляющегося фрейма

Здравствуйте, подскажите пожалуйста по какой причине может не работать мой пример и что нужно поменять для его работы
Есть 3 страницы, p1.html, p2.html и p3.html. Страница p1 представляет собой описания 2-х фреймов, в которые загружаются соответственно страницы p2 и p3.Содержимое страницы p1:

<html><head>head>
<frameset rows="*,200px" border=0 name="VW">
<frame src="p2.html" name="Main" scrolling="no">
<frame src="p3.html" name="Indata" scrolling="no">
</frameset> </html>

Cтраница p2 должна забирать по срабатыванию обработчика на событие onClick или нажатие клавиш данные из страницы p3(которая периодически обновляется).У p2 cледующее содержание:

<html><head><meta http-equiv="Content-Type" content="text/html; charset=windows-1251"></head>
<body onClick="bP();">
<SCRIPT LANGUAGE>
function bP()
{
civ=window.parent.Indata.document.b ody.innerHTML
alert(civ);
}
</script>

<form action="" method="post" name="EGS" enctype="text/plain">
<input name="e1x" value="10" type="text" maxlength="6" size="4">
<input name="e1y" value="10" type="text" maxlength="6" size="4">
</form>
</body>
</html>

У страницы p3 :

<html><head> <META HTTP-EQUIV="REFRESH" CONTENT="20;URL=http://127.0.0.1/Game/In_data.html"></head>

<body onLoad="Move_data2();">
<SCRIPT LANGUAGE>
function Move_data2()
{
window.parent.Main.EGS.e1x.value=99 8
window.parent.Main.EGS.e1y.value=97 8
}
</script>
</body>
</html>

Здесь показаны попытки забрать содержимое из фрейма Indata двумя способами – через innerHTML и помощи функции Move_data2, которая должна сама обновить значения полей формы EGS после своей загрузки.Проверялось на локальном вебсервере, путем подмены значений e1x и e1y на странице p3 до ее перезагрузки.Первый раз все нормально, в следующий ничего не происходит.
Gym вне форума Ответить с цитированием
Старый 23.01.2011, 15:08   #2
yury_coder
Пользователь
 
Регистрация: 31.10.2010
Сообщений: 53
По умолчанию

window.parent.Indata.document.b ody.innerHTML
пробел разве не видите?

Я бы лучше сделал, чтобы все функции располагались в документе-родителе, а фреймы только ссылались на них.

да и не надо вообще использовать frameset, это очень неудобно и поисковикам не нравится.
yury_coder вне форума Ответить с цитированием
Старый 24.01.2011, 18:04   #3
Gym
Новичок
Джуниор
 
Регистрация: 23.01.2011
Сообщений: 2
Радость

Цитата:
Сообщение от yury_coder Посмотреть сообщение
window.parent.Indata.document.b ody.innerHTML
пробел разве не видите?

Я бы лучше сделал, чтобы все функции располагались в документе-родителе, а фреймы только ссылались на них.

да и не надо вообще использовать frameset, это очень неудобно и поисковикам не нравится.
Пробел не моя ошибка.Пробел vBulletin 3.8.5 добавил.Моя ошибка как оказалось была всетаки в том что неправильно выполнил условие принадлежности обновляющегося фрейма url.

По поводу функций, как сделать надежнее (при обрыве связи например):
функция из документа-родителя должна забирать данные или все же пусть фрейм сам, после того как обновится исправит глобальные переменные.В первом случае при несинхронности исполнения функции (нельзя сказать точно когда она выполнится) и готовности данных (периодичесчки) фрейма нужно обработать логику дальнейшего поведения, это либо ждать, теряя время (а мне оно важно).Во втором функция просто получит старые значения из глобальных переменных, в другой раз (более удачный) получит свежие данные.Может тут есть какие нибудь нюансы ?

Поисковиков моя задумка не касается поэтому выбор либо за frame, либо iframe, если учесть что разница между ними в гибкой возможности позиционирования iframe на странице, что наверняка требует больше памяти и логики работы браузера - что мне совершенно не нужно в данном случае то и выбрал frame
Спасибо что уделили время
Gym вне форума Ответить с цитированием
Старый 24.01.2011, 20:39   #4
yury_coder
Пользователь
 
Регистрация: 31.10.2010
Сообщений: 53
По умолчанию

на самом деле, памяти iframe ест ничуть не больше.

по поводу стабильности, если в документе (любом) произошло событие load, то с этого момента документ полностью находится в памяти и соединение с сервером обрывается. Поэтому принципиальной разницы, где находятся функции, нет.

Но, если весь код страницы находится в одном и том же месте, то такой код выглядит логичней. В данном случае, самым логичным было бы яваскрипт расположить в главном окне.

Тем не менее, сейчас уже не существует задумки, которую невозможно реализовать БЕЗ фреймов. Сейчас это только распотрошение кода на несколько документов и усложнение обращений из javascript
yury_coder вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Получение данных с сайта. Rapala Работа с сетью в Delphi 3 19.05.2010 08:09
Получение данных mish@ Работа с сетью в Delphi 0 28.04.2010 15:08
получение данных avis Win Api 0 19.12.2009 19:24
Получение данных с БД. urgu_st SQL, базы данных 5 13.01.2009 15:11
Получение типа данных Proof БД в Delphi 2 14.05.2008 20:38