Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Помогите разобраться с передачей данных между фреймами (https://javascript.ru/forum/dom-window/5127-pomogite-razobratsya-s-peredachejj-dannykh-mezhdu-frejjmami.html)

Plusb 18.09.2009 11:52

Помогите разобраться с передачей данных между фреймами
 
У меня возникла проблема с обменом данными между фреймами, сейчас опишу ее:

Есть 3 файла:
main.html
left.html
right.html

В файле Майне в head'е:

Код:

<frameset cols="*,*">
  <frame name="left" src="left.html" />
  <frame name="right" src="right.html" />
</frameset>
<noframes></noframes>

В файле Лефте в head'е:

Код:

<script language="javascript">
t = parent.right.z;
document.write("VOT:" + t);
</script>

В файле Райте в head'е:

Код:

<script language="javascript">
var z = 3;
document.write("VOT:" + z);
</script>

В итоге гружу майн.штмл и получаю:
В левой фрейме: VOT:undefined
и
В правом фрейме: VOT:3

Почему так получается? я не правильно обращаюсь?
Но если не правильно то почему, если сделать так:

В файле Майне в head'е:

Код:

<frameset cols="*,*">
  <frame name="left" src="left.html" />
  <frame name="right" src="right.html" />
</frameset>
<noframes></noframes>

В файле Лефте в head'е:

Код:

<script language="javascript">
t = 3
document.write("VOT:" + t);
</script>

В файле Райте в head'е:

Код:

<script language="javascript">
var z = parent.left.t;
document.write("VOT:" + z);
</script>

В итоге гружу майн.штмл и получаю:
В левой фрейме: VOT:3
и
В правом фрейме: VOT:3

и все хорошо!

qwerty 18.09.2009 12:06

не загрузился - parent.right.z
проверяй setTimeout();

Plusb 18.09.2009 12:37

Цитата:

Сообщение от qwerty (Сообщение 30390)
не загрузился - parent.right.z
проверяй setTimeout();

parent.right - это обращение к второму фрейму

setTimeout(); - у меня вообще нет в файлах, он нужен?

qwerty 18.09.2009 13:31

обращаешься правильно. undefined потому что страница еще не загрузилась, вот и нужно организовать проверку загрузки.

Plusb 18.09.2009 14:05

Цитата:

Сообщение от qwerty (Сообщение 30396)
обращаешься правильно. undefined потому что страница еще не загрузилась, вот и нужно организовать проверку загрузки.

Понятно попробую реализовать, если будет время кинь как это сделать

qwerty 18.09.2009 14:35

<head>
<script>
function getz(){
var t = parent.right.z;
document.write("VOT:" + t);
}
function checkload(){
if(parent.right.document.readyState=="complete"){
void getz();
clearTimeout(tmr);
}
}
var tmr = setTimeout("checkload()",100);
</script>
</head>

Plusb 18.09.2009 15:26

Цитата:

Сообщение от qwerty (Сообщение 30400)
<head>
<script>
function getz(){
var t = parent.right.z;
document.write("VOT:" + t);
}
function checkload(){
if(parent.right.document.readyState=="complete"){
void getz();
clearTimeout(tmr);
}
}
var tmr = setTimeout("checkload()",100);
</script>
</head>

Спасибо прокатило :)

x-yuri 18.09.2009 18:57

а не лучше ли повесить обработчик onload на правый фрейм :-?


Часовой пояс GMT +3, время: 08:57.