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


Автор: Vladster 4.4.2006, 16:07
Пожалуста помогите написать скрипт
хоть на какойто пункт

Дано
некая страничка откривает НАШУ страничку(с скриптом) в новом окне
x=window.open('dum2.html','example','statusbar,scrollbars,resizable,width=300,height=200');

Задача скрипта:
1 перебросить opener окно на "левую" страничку(сделал)

2 выждать момент отправки 0 или 2 форми (opener окна)
есть идея сделать обработку onsubmit но я не знаю как вызивать функцию из другого окна

3 скопировать дание в форму(форма в окне со скриптом)
на практике не выходит

4 отправить форму(сделал)

Автор: 12345c 4.4.2006, 16:42
Если "левая" страница на чужом хосте (Где?), то для общего случая любого браузера ничего из (2), (3) не выйдет.

Автор: Vladster 5.4.2006, 11:46
"левая" страница на том же сайте что и "открывающая страница"

Автор: 12345c 5.4.2006, 14:17
 к номерам форм лучше не привязываться, обращайтесь по именам, чтобы не путаться в дальнейшем.

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

Код 1-й страницы:
Код
<form name=f1 action=#>
    <input name=i1 value=12345-0>
</form>
<form name=f2 action=#>
    <input name=i1 value=12345-1>
</form>
<form name=f3 action=#>
    <input name=i1 value=12345-2>
</form>
<button onclick=w2=open('JsPrimeryCode-82a.htm','win2','');>новое окно --></button>


Код 2-й страницы под именем JsPrimeryCode-82a.htm :

Код
<script>
captForm=function(e){
    if(document.all)ai2.value=opener.event.srcElement.i1.value;
    else document.getElementsByName('ai2')[0].value=e.target.value;
    attachE();
}
attachE=function(){if(self.addEventListener){opener.document.f1.addEventListener("submit",captForm,false);
    opener.document.f3.addEventListener("submit",captForm,false);}
else if(self.attachEvent){opener.f1.attachEvent("onsubmit",captForm);
    opener.f3.attachEvent("onsubmit",captForm);} 
}
onload=attachE;
</script>
<input name=ai2 value=Форма_для_копирования>

При демонстрации нажатие Enter в первом или третьем поле ввода сделает копирование значения во 2-е окно, во втором - нет. (Кнопки не поставил для упрощения кода.)
 Добавлено @ 14:20 
Демонстрация тут: http://js2.ru/example/JsPrimeryCode-82.htm 

Автор: Vladster 5.4.2006, 18:17
А если использовать

location.replase(...); или location.href=...

аналогично нельзя ?
Добавлено @ 18:29
Появилась идея

"Натянуть" на видимую область страници до етого "свернутий" IFRAME и туда уже грузить левую
страницу

Автор: 12345c 5.4.2006, 19:04
1. Нельзя, всё равно страница обновляется.
2. Можно так, или держать скрипт в невидимом обрамляющем фрейме. Смотря что нужно по задаче. Или отправлять запрос в невидимый фрейм, чтобы "левая" страница не удалялась.

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