Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Отправлена ли форма. (https://javascript.ru/forum/dom-window/54089-otpravlena-li-forma.html)

krasovsky 03.03.2015 08:48

Отправлена ли форма.
 
Есть такая форма, открытая в popup, которая отправляется обычным сабмитом. Без всяких там ajax'ов/фреймворков/приблуд. У формочки указан target="_blank".
Форму надо закрыть после того как она отсабмитилась. Есть ли человеческий способ это реализовать?

ksa 03.03.2015 09:34

Цитата:

Сообщение от krasovsky
Есть ли человеческий способ это реализовать?

Например то, новое окно пусть ее и закроет. ;)

krasovsky 03.03.2015 10:04

Цитата:

Сообщение от ksa
Например то, новое окно пусть ее и закроет.

В смысле из нового таба получить доступ к табу-родителю, и закрыть форму? Я не нашел никакой инфы на сей счет, и вобщем то не уверен что такое возможно. Кроме того форма отсылается на другой домен. Или я ошибаюсь и можно осуществить какую то связь между табами, хотя бы не кроссбраузерную?

Пока вышел из положения черезжопным вариантом с setTimeout.
Можно конечно storage данные ложить, и ориентироваться по ним. Но это тоже так себе вариант.

danik.js 03.03.2015 10:51

krasovsky, зачем закрывать без предупреждения вкладку без ведома пользователя? Как он должен на это реагировать по твоему?

ksa 03.03.2015 10:56

Цитата:

Сообщение от krasovsky
В смысле из нового таба получить доступ к табу-родителю, и закрыть форму?

Если у тебя используется
Цитата:

Сообщение от krasovsky
target="_blank"

Это новое окно. Значит у него есть ссылка на окно, его создавшее...
window.opener

Далее все действия через него...

krasovsky 03.03.2015 12:11

Цитата:

Сообщение от danik.js
зачем закрывать без предупреждения вкладку без ведома пользователя? Как он должен на это реагировать по твоему?

Вероятно, плохо ;)
Не вкладку, читаем внимательно, а форму находящуюся в popup'е. Обе табы остаются открытыми. Я еще не совсем правильно выразился - технически я закрываю сам popup и удаляю содержимое.

Цитата:

Сообщение от ksa
Это новое окно. Значит у него есть ссылка на окно, его создавшее...

Увы,увы.Если бы домен был один, можно было бы что то нацарапать там, закрывать по флагу или еще что. Но для кроссдоменных сабмитов такой трюк не сработает. Ну разве что в каких нибудь браузерах.

В общем похоже, адекватных механизмов для таких случаев не существует, в связи со специфичностью.

danik.js 03.03.2015 12:39

Цитата:

Сообщение от krasovsky
читаем внимательно

Ага. перечитал. Ну дык тогда нет необходимости ждать пока загрузится открытая (в момент сабмита) вкладка.

Попап открывает вкладку (сабмитом) и самоустраняется, так ведь надо?

чета типа <form onsubmit="setTimeout( function() { window.close() }, 0)">

Только не уверен что попап может сам себя закрыть. Вероятно об этом нужно просить "открывателя".

krasovsky 03.03.2015 14:52

Цитата:

Сообщение от danik.js
Ага. перечитал. Ну дык тогда нет необходимости ждать пока загрузится открытая (в момент сабмита) вкладка.

Попап открывает вкладку (сабмитом) и самоустраняется, так ведь надо?

чета типа <form onsubmit="setTimeout( function() { window.close() }, 0)">

Только не уверен что попап может сам себя закрыть. Вероятно об этом нужно просить "открывателя".

Ага, у меня все так и есть примерно. Просто хотелось бы setTimeout не использовать. Но видимо не судьба.

danik.js 03.03.2015 15:28

Цитата:

Сообщение от krasovsky
росто хотелось бы setTimeout не использовать

Да нормально все. Это типа замена отсутствующего события onaftersubmit.

Так можно попробовать. Но нужно тестировать во всех браузерах.
form.onsubmit = {
    this.submit();
    window.close()
};


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