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)
не пашет...

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

lord2kim 16.07.2012 21:00

Цитата:

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

IE8, FF 13.0.1, Chrome 20.0, Yandex Internet 18.0

oneguy 16.07.2012 21:03

Цитата:

Сообщение от lord2kim
IE8, FF 13.0.1, Chrome 20.0, Yandex Internet 18.0

Наверно, у вас есть ещё ошибка где-то в коде. Попробуйте разобраться с помощью консоли. У меня пашет в FF 13.0.1, Chrome 20.0.

lord2kim 16.07.2012 21:08

Цитата:

Сообщение от oneguy (Сообщение 189353)
Наверно, у вас есть ещё ошибка где-то в коде. Попробуйте разобраться с помощью консоли. У меня пашет в FF 13.0.1, Chrome 20.0.

странно, но факт...
ошибки нет...перепроверил несколько раз...консоль чиста...

oneguy 16.07.2012 22:33

lord2kim, вот полный код, он у вас работает?
Файл test.html:
<!DOCTYPE html>

<html><head><title></title></head><body>

<script type="text/javascript">

var map;
function a() {
    map = window.open('b.html','new','width=1300 ,height=500');
    map.onload = ab;
}
 
function ab() {
    map.document.getElementById("txt").value="123";
    map.focus();
}

</script>
<input type="button" value="1" onclick="a()">
<input type="button" value="2" onclick="ab()">

</body></html>

Файл b.html:
<!DOCTYPE html>

<html><head><title></title></head><body>
<input id="txt">

</body></html>

lord2kim 16.07.2012 22:54

oneguy, упорно не хочет...а странно

oneguy 16.07.2012 22:58

А без 10-ой строки в test.html работает?

Dim@ 16.07.2012 22:59

oneguy,
слушай а это правильно по твоему?
'width=1300 ,height=500'

Dim@ 16.07.2012 23:03

oneguy,
а хотя все работает

lord2kim 16.07.2012 23:05

Цитата:

Сообщение от oneguy (Сообщение 189378)
А без 10-ой строки в test.html работает?

да...только по отдельности пашет...как ни странно...
лан, забей)


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