Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Общие вопросы > Событие для родительского окна из дочернего


Автор: aydar69 21.11.2010, 18:51
Подскажите, как сделать чтобы в родительском окне,  произошло действие(alert например), после события onclick в дочернем?
Думал думал, придумал, да грамотно не могу написать, да и не знаю правильно ли надумал.
Код

(Родитель)
<script>
window.onload = function() {

var open_btn = document.getElementById("open");

var win;

open_btn.onclick = function() {

win = window.open("test.html", "new", "width=750,height=500");
}
var okno = win.document.getElementById("kliknul"); //найти id с именем kliknul в дочернем
/*Это действие должно произойти после onclick в дочернем*/
okno.onclick = function(){
document.getElementById("otkril").style.color = 'red'; // Слово Кликнул должно применить красный цвет,(в родительском)
}};
</script>
<a href="#" id="open">Открыть</a>
<p id='otkril'>Кликнул</p>

Код

Дочернее:
<input type='submit' id='kliknul'>

спасибо 

Автор: bars80080 21.11.2010, 19:03
из дочернего окна в родительский выход всегда через window.opener или window.opener.document

если нужно получить значение некоторой переменной из родительского окна, то window.opener.perem
если нужно запустить некий метод в родительском окне, то window.opener.myfunction();

Автор: aydar69 21.11.2010, 19:43
тут даже дочернее ничего не передает, она только хранит id по которому нужно кликнуть.
А родитель должен это событие схватить и применить к себе. 
вот составил, но с применением что то не так. 
Код

<script>
window.onload = function() {

var open_btn = document.getElementById("open");
var win;
open_btn.onclick = function() {
win = window.open("test.html", "new", "left=100,width=750,height=500,Scrollbars=1");

var prisv=win.document.getElementById("header"); //Присваиваем переменной, id из дочернего

prisv.onclick = function() // когда в дочернем кликаем  где id header, закрашиваем слово в золотой цвет в родительском окне.
{
document.getElementById("proverka").style.color='gold';
}
}};
</script>
<p id="proverka">Проверка</p><br>

Это все должно выполнять родитель.  
smile 
Трудноватая функция какая та... 
Помогите, а я отблагодарю  smile 

Автор: bars80080 21.11.2010, 22:32
так что, наоборот что ли? из родительского надо дотянуться в дочерний?
ну вы пишите хотя бы вменяемо



Цитата(aydar69 @  21.11.2010,  18:43 Найти цитируемый пост)
win = window.open("test.html", "new", "left=100,width=750,height=500,Scrollbars=1");
var prisv=win.document.getElementById("header");

две команды следуют друг за другом,
не думаю, что за 17 миллисекунд браузер успеет открыть новое окно и полностью отстроить весь DOM в нём

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




как обратиться из дочернего в родительское - уже написал

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)