Отправка данных формы перед закрытием документа
Доброго всем дня! Господа гуру, выручайте плиз:
Имеется html с iframe вида: <iframe id="ifrm" src="empty.php" width="100%" height="100%-150px" style="border:0; position:absolute;" frameborder="0"></iframe> по нажатию кнопок яваскриптом меняется src - грузятся в фрейм разные html-ки с формами вида <form name="main" action="1chs_srv.php" method="post">. Как мне сделать чтобы перед сменой html-ки (при нажатии кнопки в паренте) текущая форма отправила данные (сделала submit). Следующие конструкции не работают: function save_data() { document.main.submit(); } 1. window.onunload=save_data;- не работает 2. <body style="width: 99%; onunload="save_data();" >-не работает 3. window.onclose=save_data;- не работает Подскажите на какое событие вешать - отправка должна быть именно перед сменой атрибута src у iframe - там не только кнопки но и други события меняют этот атрибут. ЗЫ: Заранее благодарен тем кто не прошел мимо :) |
window.frames[0].document.getElemetById('ifrm').submit()
|
Спасибо за внимание, но наверно я не совсем доходчиво объяснил:
отслеживать все места где меняется src слишком муторно, идея была поймать событие когда html выгружается из фрейма, вопрос стоял не как сабмитить, а на какое событие повесить этот сабмит, причем контролировать это нужно из html-ки которая находится в фрейме, а не из парентной, в которой находится сам фрейм. submit у iframe`а? |
Попробуй onbeforeunload или onpopstate для отслеживания изменения урла, и мне кажется тебе придется отправлять форму твою ajax'ом, и в коллбеке (success или complete) перезагружать страницу
|
HarleyDavidson,
http://learn.javascript.ru/onload-on...onbeforeunload |
cyber, спасибо, я эту статью уже почти наизусть выучил :) . Ситуация следующая:
конструкция 1: <body onbeforeunload="document.main.submit();return alert('Данные сохранены. Точно перейти?');"> IE 9 - форма сабмитится, алерт выдает, скрипт которому передано управление выполняется дальше. FF 29 - форма сабмитится, алерт выдает, скрипт которому передано управление вылетает. GC 34 - ноль эмоций - вообще не реагирует Opera - принципиально не поддерживает событие onbeforeunload конструкция 2: function setHandler() { window.onbeforeunload = function() { document.main.submit(); return "Данные сохранены. Точно перейти?"; }; } setHandler(); эксплорер и файерфокс ведут себя также, а вот хром, алерт выдает, скрипт дальше выполняет, а данные не сохраняются (не происходит сабмита однако). Задача остается нерешенной - Как автоматом сохранить данные формы при попытке пользователя свалить со страницы или закрыть браузер (алерт в принципе не нужен - я его для наглядности воткнул). Желательно конечно кроссбраузерное решение (ну оперу фиг с ней можно выкинуть). Помогите плиз - уже 5 дней башку ломаю. |
HarleyDavidson, а не проще ли сделать кнопку "отправить" что бы юзер сам отправлял форму?
Это самое кроссбраузерное и простое решение. |
Ну попробуй вручную ajax'ом данные передать...
|
Цитата:
Цитата:
|
Цитата:
Вот тут максимально подробно разобрали вопрос. На какое событие? На все подряд. N форм? Гугли готовые решения для ajax отправки, и всё сведётся к вызову одной функции. |
Часовой пояс GMT +3, время: 11:14. |