Initialization JavaScript code:

Main JavaScript code:

Show this JavaScript code
Your data
First name:  
Last name:  

Note: full english description will be later.



Задача: Работа с дополнительным окном. Показать форму аналогичную предыдущему примеру в отдельном окне, открываемом при помощи функции "open". После ввода данных форма не скрывается, но ее поля становятся недоступными для ввода.

Фактически, данный пример первый, из предложенных здесь, демонстрирует главную особенность js-wrapper - возможность из одного места управлять несколькими окнами браузера независимо от того чем являются эти окна по сути: frame, iframe, или окна открытые при помощи "open". Если вам необходимо в своем скрипте работать с несколькими окнами - вы должны создать обертку для каждого из этих окон при помощи команды: new winWrapper(thisWindow), где thisWindow - является ссылкой на объект window оборачиваемого окна. Затем, обащаясь к соответствующей обертке - вы можете получать доступ к методам и элементам этого окна.


Мне бы очень очень хотелось полностью избавится от JavaScript в html-коде который загружается в дополнительное окно. Или, по крайней мере сделать инициализирующий скрипт выполняемый в дополнительном окне независимым от переменных, задаваемых в основном окне. Цель здесь такая: в большом проекте написанием JavaScript может заниматься один человек, а созданием контента в дополнительное окно - другой и хотелось-бы работу этих людей сделать максимально независимой. Если кто-то изучал первую версию моей обертки, то возможно знает, что в первой версии я пробовал использовать для этого методику основанную на "замыканиях". Но она там работала некорректно по крайней мере потому, что после нажатия клавиши "F5"(обновить) на дополнительном окне - все переменные в нем сбрасывались.

С учетом всего вышесказанного, я принял решение выполнять инициализацию из дополнительного окна путем прямого вызова специального метода в обработчке при помощи объекта opener и передавать в этот метод ссылку на объект window данного окна. В данном примере инициализация в дополнительном окне выглядит следующим образом: opener.remote_window.remote_init(window);. Данное решение мне не нравится, но другого я пока не нашел! Если кто-то сможет мне здесь что-то подсказать - буду весьма благодарен.