Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Передача параметров из одного фрейма в другой (https://javascript.ru/forum/events/4031-peredacha-parametrov-iz-odnogo-frejjma-v-drugojj.html)

Игорь12345 15.06.2009 22:15

Передача параметров из одного фрейма в другой
 
не могу понять... простой пример.. есть окно с двумя фреймами, пытаюсь из первого загрузить во второй другую html страничку и поменять в ней картинку.. по отдельности коды работают, а вместе - никак.. кто подскажет в чем загвоздка??

function load_1()
{
parent.main.document.location="reply.html";
parent.main.document.images[0].src="banner1.gif";
}

страничка грузится, но изображение не меняется. если же страничка была предварительно подгружена (при первонаальной загрузке окна), то изображение меняется.
Спасибо

Gvozd 16.06.2009 00:46

вы пытаетесь поменять изображение, которого еще не существует
поместите вторую строку в обработчик события onload соответсвущего фрейма

Игорь12345 16.06.2009 09:54

> поместите вторую строку в обработчик события onload соответсвущего фрейма

если просто добавить эту строку на событие onload, то каждый раз при загрузке фрейма будет меняться первая картинка html страницы на одну и ту же.. можно ли как то обратиться к обработчику события фрейма из одной из дочерних страничек?

Gvozd 16.06.2009 12:17

вообще-то я это и подразумевал
выставить обработчик на загружаемый фрейм из JS-кода другого, загруженного фрейма
http://javascript.ru/tutorial/events...voystvo-obekta
советую прочитать не только указанную часть статьи, а всю статью

igor12345 16.06.2009 13:59

понял, вот что получилось

function load_1()
{
parent.main.document.location="reply.html";
parent.document.getElementById('main').onLoad=func tion() {
parent.main.document.images[0].src="banner1.gif";
}

все равно не работает

igor12345 16.06.2009 14:02

function load_1()
{
parent.main.document.location="reply.html";
parent.document.getElementById('main').onLoad=func tion() {
parent.main.document.images[0].src="banner1.gif";
}
}

Riim 16.06.2009 14:05

igor12345, если ты зарегистрируешься, то сможешь редактировать свои ранее добавленные сообщения.

Gvozd 16.06.2009 14:33

внутри обработчика, вы ведете работу с областью видимости другого фрейма

igor12345 16.06.2009 15:12

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

<frameset rows="*" cols="534,*" framespacing="0" frameborder="no" border="0" >
<frame src="menu.html" name="left" scrolling="No" noresize="noresize" id="left" title="leftFrame" />
<frame src="continue.html" name="main" id="main" title="mainFrame" />
</frameset>

Обращаюсь из фрейма "left" к обработчику загрузки фрейма "main":
parent.document.getElementById('main').onLoad={... }

Gvozd 16.06.2009 15:18

кстати, JS-регистрозависимый язык, и писать надо onload
а внутри него, можно обащатся к фрейму, непосредственно через window, так как window будет соответсвовать внутри обработчика только что прогруженному фрейму, как раз

igor12345 16.06.2009 20:14

window.getElementById('main').onload={...}
или
window.frames[1].onload={...} ?
но ничего из этого не работает. Gvozd если вы знаете решение, скажите, не томите..

Gvozd 16.06.2009 22:12

index.htm
<html>
<head>
<title>Insert title here</title>
</head>
<body>
<iframe src="1.htm"></iframe>
<iframe id="main" src=""></iframe>
</body>
</html>

1.htm
<html>
<head>
</head>
<body>
<script>
function load_1()
	{
	parent.document.getElementById('main').onload=function()
		{
		this.contentWindow.document.images[0].src="123.gif";
		}
	parent.document.getElementById('main').src="123.htm";
	}
</script>
<body>
<a href="#" onclick="load_1();return false;">wqe</a>
</body>
</html>

123.htm
<html>
<head>
<title>title</title>
<script type="text/javascript">
</script>
</head>
<body>

<img src="" />
</body>
</html>

igor12345 16.06.2009 23:36

Спасибо!!! попутно вопрос - а почему вы используете iframe, а не классические фреймы?

Gvozd 17.06.2009 00:00

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

igor12345 17.06.2009 09:48

Gvozd я вам отправил сообщение в личку, ответьте пожалуйста

Gvozd 17.06.2009 14:48

ответил на почту


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