Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   как передать значение переменной в IFRAME в поле формы JS-ом из самой страницы? (https://javascript.ru/forum/misc/1499-kak-peredat-znachenie-peremennojj-v-iframe-v-pole-formy-js-om-iz-samojj-stranicy.html)

DeUre 01.08.2008 12:59

как передать значение переменной в IFRAME в поле формы JS-ом из самой страницы?
 
на странице открывается IFRAME в котором есть форма с текстареа полем

как передать значение переменной в IFRAME в поле формы JS-ом из самой страницы?

скажем нажал на смайлик и в текстареа (в iframe) добавилось ":)"

ZoNT 01.08.2008 13:02

это возможно, только если ифрейм создат ты, и страница там загружена с этого же домена...

DeUre 01.08.2008 13:06

допустим я создал Iframe

<iframe id="fr" src="test.htm" width="750" height="500" align="right">

там форма name='forma'
и текстареа name='text'

DeUre 01.08.2008 13:48

1) ZoNT, а если с другого домена то нельзя чтоли?

2) и как на своем домене?

Андрей Параничев 01.08.2008 16:38

DeUre,
Документы с разных доменов не могут общаться друг с другом через JavaScript.

Итак, по теме. Из родительского документа (в котором тег iframe) можно получить доступ к функциям и переменным из второго скрипта через конструкцию
var iframeWindow = myIframe.contentWindow || myIframe.contentDocument.parent;

И работать с iframeWindow нарямую, как с элементом window внутри самого test.htm. Т.е вызвать из родительского окна функцию можно будет просто вот так: iframeWindow.somefunc('bla-bla-bla').

Из фрейма вы можете получить доступ к родительскому скрипту через конструкцию window.parent.

DeUre 01.08.2008 17:40

спасибо! попробую

Ichigeki 02.11.2008 17:05

у меня подобная проблема


в iframe загружаю страницу в которой:
<body style="background: red">


потом делаю так:
var iframeWindow = iframe.contentWindow || iframe.contentDocument.parent;
var frmBody = iframeWindow.document.getElementsByTagName("body")[0];
frmBody.style.backgroundColor = "green";


но при этом цвет фона во фрейме не меняется на green. почему?
заранее спасибо

Андрей Параничев 03.11.2008 19:14

Ichigeki,
С одного домена документы?

Ichigeki 03.11.2008 19:19

Андрей Параничев,
пока что на сервер не загружал, локально тестирую,но предполагается что буду на одном

alekciy 12.01.2009 18:55

Мне вот интересно, как получить доступ к конкретной переменной родительского документа (если та находиться в глобальной зоне видимости, т.е. вне каких либо функций) из iframe-а и изменить её...

Kolyaj 12.01.2009 19:10

top.foo = 'bar';

alekciy 12.01.2009 19:39

Цитата:

Сообщение от Kolyaj (Сообщение 10611)
top.foo = 'bar';

Спасибо, удобный способ.

Сам же пока догуглился до этого:
window.parent.window.foo = 'bar';

Для будующих форум попавших сюда через поиск (как и я) поясню, что и документа и iframe/frame "своя" зона глобальной видимости переменных. Переменые в ней могут быть найдены в объекте window, соответсвенно из фрейма можно попасть в глобальную зону через window.parent.window.

Kolyaj 12.01.2009 20:04

Цитата:

Сообщение от alekciy
window.parent.window

window.parent.window == window.parent == parent.

parent -- родительское окно
top -- самое "верхнее" окно.
Для одиночной вложенности фреймов parent == top.

Rus 17.12.2013 01:07

у меня противоположный вопрос, не стал плодить темы. Как из js в iframe передать значение переменной Values в главный документ в js. Оба на одном домене.

в iframe.html

var Values=500;
_____________________
а в index.html

alert(Values);


<iframe src ="iframe.html" width="100%" height="300" frameborder="0">
<p>Ваш браузер не поддерживает iframes.</p>
</iframe>

Rus 17.12.2013 16:37

на самом деле все просто,
function test(){alert(Values);}


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