Форум dkLab и Denwer
Здесь общаются Web-разработчики.
Генеральный спонсор:
Хостинг «Джино»

передача ссылки на объект из родительского окна дочернему (Rumata, оценка: 1)
Author Message
Rumata
Профессионал



Joined: 17 Aug 2003
Posts: 1850
Карма: 184
   поощрить/наказать


PostPosted: Tue Oct 17, 2006 1:14 pm (написано за 1 минуту 54 секунды)
   Post subject: передача ссылки на объект из родительского окна дочернему
Reply with quote

есть ли более элегантное решение подобному?
Code (html): скопировать код в буфер обмена
<input (december.com/html/4/element/input.html) type="button" id="xyz" value="call child" onclick="abc.show()" /> (december.com/html/4/element/.html)
<script> (december.com/html/4/element/script.html)
function ABC(aButton)
{

        var button = aButton;

        this.change = function()
        {
                button.value = 'changed from child!';
        }

        this.show = function()
        {
                var w = open('', '', 'height=100,width=300');
                w.document.writeln('< (december.com/html/4/element/.html)' + 'script>var ctrl = null;< (december.com/html/4/element/.html)' + '/script>'
                        + '<input (december.com/html/4/element/input.html) type="button" value="call parent method" onclick="ctrl.change()" /> (december.com/html/4/element/.html)');
                w.ctrl = this;
        }

}
var abc = new ABC(document.getElementById('xyz'));
</script>
суть задачи
дочернее окно создается объектом родителя с передачей ссылки на данный объект
Back to top
View user's profile Send private message
AKS
Участник форума



Joined: 28 Dec 2005
Posts: 1174
Карма: 102
   поощрить/наказать


PostPosted: Tue Oct 17, 2006 2:20 pm (спустя 1 час 5 минут; написано за 2 минуты 33 секунды)
   Post subject:
Reply with quote

Rumata
Можно было бы и не передавать ссылку на данный объект, ведь есть св-во window.opener. Если есть в parent window объект abs, то на кнопку можно повесить opener.abs.change().
Back to top
View user's profile Send private message Send e-mail
Rumata
Профессионал



Joined: 17 Aug 2003
Posts: 1850
Карма: 184
   поощрить/наказать


PostPosted: Tue Oct 17, 2006 4:11 pm (спустя 1 час 51 минуту; написано за 3 минуты 12 секунд)
   Post subject:
Reply with quote

AKS, я знаю об этом
если говорить в терминах (класс-объект, которые не очень применимы в js), то класс ничего не должен знать о реальном объекте

например, я хочу предоставить некий АПИ для работы - и пользователь волен именовать объект на свое усмотрение
в таком случае, windows.opener.xyz совершенно не подходит
Back to top
View user's profile Send private message
AKS
Участник форума



Joined: 28 Dec 2005
Posts: 1174
Карма: 102
   поощрить/наказать


PostPosted: Tue Oct 17, 2006 4:49 pm (спустя 37 минут; написано за 52 секунды)
   Post subject:
Reply with quote

Rumata
Просто я из примера не понял толком что нужно, а что не нужно...
А что значит:
Quote:
класс ничего не должен знать о реальном объекте
Back to top
View user's profile Send private message Send e-mail
Rumata
Профессионал



Joined: 17 Aug 2003
Posts: 1850
Карма: 184
   поощрить/наказать


PostPosted: Tue Oct 17, 2006 5:15 pm (спустя 25 минут; написано за 4 минуты 56 секунд)
   Post subject:
Reply with quote

AKS wrote:
Просто я из примера не понял толком что нужно, а что не нужно
моя вина. надо яснее выражать свою мысль
AKS wrote:
А что значит: класс ничего не должен знать о реальном объекте
AKS wrote:
Если есть в parent window объект abs, то на кнопку можно повесить opener.abs.change().
то есть - в данном случае, если мне необходимо использовать возможности класса ABC, я не волен объявлять произвольную переменную данного класса, например, xyz
Back to top
View user's profile Send private message
WingedFox
Профессионал



Joined: 29 Apr 2003
Posts: 4064
Карма: 269
   поощрить/наказать

Location: Питер

PostPosted: Tue Oct 17, 2006 5:17 pm (спустя 2 минуты)
   Post subject:
Reply with quote

AKS
То что у класса есть некий интерфейс. И им можно пользоваться, независимо от обстоятельств.

[offtop]
В детской книжке был пример, когда требовалось покрасить забор.
Там был объект "робот", которому можно было дать команды "идти", "повернуться", "взять" и т.п.

Так вот если вынести эти команды на пульт ДУ, то управляемым объектом может быть "робот", "автомобиль", "вертолёт" и т.п.
Или тот же робот может красить "кисточкой", "пульвелизатором", "валиком" и т.п.

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

А о том, зовут робота "C3PO" или "R2D2" - оператору знать не требуется. Как и учитывать их внутренний мир.
[/offtop]
Back to top
View user's profile Send private message
AKS
Участник форума



Joined: 28 Dec 2005
Posts: 1174
Карма: 102
   поощрить/наказать


PostPosted: Tue Oct 17, 2006 5:27 pm (спустя 10 минут; написано за 1 минуту 27 секунд)
   Post subject:
Reply with quote

Но ведь здесь все объявлено - имя экземпляра ctrl?...
Back to top
View user's profile Send private message Send e-mail
WingedFox
Профессионал



Joined: 29 Apr 2003
Posts: 4064
Карма: 269
   поощрить/наказать

Location: Питер

PostPosted: Tue Oct 17, 2006 5:33 pm (спустя 6 минут; написано за 1 минуту 27 секунд)
   Post subject:
Reply with quote

Объявлено имя экземпляра в пространстве клиента, а не родителя.
Разница, как минимум, в том, что после закрытия родительского окна ошибок прямого обращения к св-вам opener не будет.
Back to top
View user's profile Send private message
AKS
Участник форума



Joined: 28 Dec 2005
Posts: 1174
Карма: 102
   поощрить/наказать


PostPosted: Tue Oct 17, 2006 5:40 pm (спустя 6 минут; написано за 1 минуту 51 секунду)
   Post subject:
Reply with quote

А, понятно. Чтобы можно было закрыть родительское окно? Но у меня все равно ошибка возникает после закрытия parent в IE (пишет, что "не удается выполнить программу из освобожденного сценария")...
Back to top
View user's profile Send private message Send e-mail
AKS
Участник форума



Joined: 28 Dec 2005
Posts: 1174
Карма: 102
   поощрить/наказать


PostPosted: Tue Oct 17, 2006 5:45 pm (спустя 5 минут; написано за 1 минуту 6 секунд)
   Post subject:
Reply with quote

Вообще-то это и понятно - ведь ctrl это не что иное, как abc (точнее opener.abc)...
Back to top
View user's profile Send private message Send e-mail
WingedFox
Профессионал



Joined: 29 Apr 2003
Posts: 4064
Карма: 269
   поощрить/наказать

Location: Питер

PostPosted: Tue Oct 17, 2006 6:03 pm (спустя 18 минут; написано за 21 секунду)
   Post subject:
Reply with quote

Угу. "а счастье было так возможно" =)
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic All times are GMT + 3 Hours
Page 1 of 1    Email to a Friend.
You cannot post new topics in this forum. You cannot reply to topics in this forum. You cannot edit your posts in this forum. You cannot delete your posts in this forum. You cannot vote in polls in this forum. You cannot attach files in this forum. You can download files in this forum.
XML