Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Вызов функции дочернего окна (https://javascript.ru/forum/events/29910-vyzov-funkcii-dochernego-okna.html)

mgluhov 16.07.2012 19:10

Вызов функции дочернего окна
 
Привет! Как можно вызвать функцию, описанную в дочернем окне, из родительского? Делаю так:

var map = window.open('map.html','new','width=1300 ,height=500');
map.CreateRoute(resultstring);


так:

var map = window.open('map.html','new','width=1300 ,height=500');
map.window.CreateRoute(resultstring);


и так:

var map = window.open('map.html','new','width=1300 ,height=500');
map.document.CreateRoute(resultstring);


не работает. В google и яндексе только про вызов функции родительского окна из дочернего.

oneguy 16.07.2012 20:02

Нужно делать так, как в первом примере:
Цитата:

Сообщение от mgluhov
var map = window.open('map.html','new','width=1300 ,height=500');
map.CreateRoute(resultstring);

При этом можно получить доступ ко всем глобальным переменным в новом окне. У вас это не работает, скорее всего, потому, что когда вы выполняете map.CreateRoute документ в новом окне ещё не загрузился или скрипт ещё не выполнился.

lord2kim 16.07.2012 20:18

oneguy, позволю себе не согласиться с вами...ибо
var map;
function a() {
	map = window.open('b.html','new','width=1300 ,height=500');
}

function c() {
	map.document.getElementById("txt").value="123";
	map.focus();
}

<input type="button" value="1" onClick="a()">
<input type="button" value="2" onClick="с()">

тоже не работает (по нажатию на вторую кнопку ничего не срабатывает после полной подгрузки b.html)

mgluhov, попробуйте приделать нужную вам функцию к onLoad событию страницы map.html

oneguy 16.07.2012 20:29

lord2kim, у вас не работает, потому что во втором инпуте в значении onClick использована русская буква "с" вместо английской :lol:

lord2kim 16.07.2012 20:35

Цитата:

Сообщение от oneguy (Сообщение 189342)
lord2kim, у вас не работает, потому что во втором инпуте в значении onClick использована русская буква "с" вместо английской :lol:

да действительно :(
но как вы объясните это?
var map;
function a() {
	map = window.open('b.html','new','width=1300 ,height=500');
	map.onLoad = ab();
}
function ab() {
	map.document.getElementById("asd").value="123";
	map.focus();
}

<input type="button" value="asd" onClick="a()">
<input type="button" value="asd" onClick="ab()">

devote 16.07.2012 20:38

Цитата:

Сообщение от lord2kim
map.onLoad = ab();

onload нужно писать нижним регистром полностью. и скобки убрать
map.onload = ab;

lord2kim 16.07.2012 20:39

Цитата:

Сообщение от devote (Сообщение 189344)
onload нужно писать нижним регистром полностью.

все равно не пашет)
хотя всегда пишу onLoad

devote 16.07.2012 20:43

Цитата:

Сообщение от lord2kim
хотя всегда пишу onLoad

это вы в тегах пишите как хотите, а в JS регистр всегда имеет важную роль.

lord2kim 16.07.2012 20:45

Цитата:

Сообщение от devote (Сообщение 189344)
onload нужно писать нижним регистром полностью. и скобки убрать
map.onload = ab;

не пашет...

Цитата:

Сообщение от devote (Сообщение 189347)
это вы в тегах пишете как хотите, а JS регистр всегда имеет важную роль.

хм...странно...всегда писал onLoad, что в тегах, что в самих скриптах...

oneguy 16.07.2012 20:59

Цитата:

Сообщение от lord2kim (Сообщение 189348)
не пашет...

У меня пашет в ИЕ, Фаерфоксе и Хроме. Каким вы браузером пользуетесь?


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