как сделать автоматическое закрытие окна на джаваскрипте непосредственно после того, как уже выполнился пхп-код?
как сделать автоматическое закрытие окна на джаваскрипте непосредственно после того, как уже выполнился пхп-код?
[/quote]
простейший вариант - вызов close() сразу после php-скрипта. смотря что именно ты хочешь сделать.
<div class='quotetop'>Цитата</div>э. это что-то из ajax[/b]
и что?Originally posted by Scorched.dn.ua@Jun 10 2007, 00:03
[b]простейший вариант - вызов close() сразу после php-скрипта. смотря что именно ты хочешь сделать.
ну просто гениальный ход - отправить клиенту документ, закрывающий окно.
кто успел прочесть - тот молодец
думаю автор темы имеет ввиду, что по отправки какой-либо формы запускается скрипт на сервере и по его выполнении окно, содержавшее форму, должно быть закрыто. не понятно, правда, зачем это надо...
xmagnusx, поясните ваш вопрос, пожалуйста.
null
спасибо. я знал, что ты оценишьну просто гениальный ход
идея проста. например, если на сервере происходит какое-либо длительное событие. допустим дамп бд или просто объемные вычисления, то можно открывать файл со скриптом в другом окне, в котором будет написано что-нибудь вроде "подождите плз", а затем оно само закрывается.
Вот простой пример:
index.php
longphpscript.phpКод:<?xml version="1.0" encoding="utf-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/xml; charset=utf-8" /> <title>Долгоработающий пхп-скрипт</title> ****<script type="text/javascript"> **** *function startlongphpscript() { *****window.open( * *"longphpscript.php", * *"w", * *"location=0,status=0,scrollbars=0,width=400,height=100" *****); *} * * ****</script> </head> <body> **** Нажми на кнопку, и я начну долго вычислять факториал большого числа.</p> ****<input type="button" value="кнопка" onclick="startlongphpscript();" /> </body> </html>
Код:<?xml version="1.0" encoding="utf-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/xml; charset=utf-8" /> <meta http-equiv="Pragma" content="no-cache" /> <title>Долгоработающий пхп-скрипт</title> </head> <body> Вычисляем факториал большого числа</p> <hr /> <?php ****ob_implicit_flush(); **** ****$n = 50000000; *****// большое число.. ****$res = 1; **** ****$iters = $n/100; $percent = 0; **** ****for( $i = $n; $i > 0; $i--,$iters-- ) { *$res = $res * $i; *if( $iters == 0 ) { *****$iters = $n/100; *****$percent++; ***** *****echo '<script type="text/javascript">document.body.innerHTML = * *" уже посчитано '.$percent.'% факториала большого числа..</p>"</script>'; *} ****} ?> <script type="text/javascript"> close(); </script> </body> </html>
в окне - форма для редактирования... изменения сохраняются... -> и закрывается
ну вот ваш скрипт-обработчик формы, в случае если данные успешно добавлены, говоритв окне - форма для редактирования... изменения сохраняются... -> и закрывается
Код:echo '<script type="text/javascript">close();</script>';
))) я уже понял, что ступил..... спасибо всем))
и ещё вопрос: как перед закрытием этого окна передать обновление другой странице?
заранее спасибо...
т. е. пользователь, надавив на кнопку, долго ждет пока загрузится документ с результатом (сервер долго не отвечает - он считает факториал), затем получает страничку со текстом "Вычисляем факториал большого числа уже посчитано 100% факториала...", которая тут же закрывает окно. так?
хм...
после close() объект окна продолжает существовать. поэтому можно например воспользоваться объектом opener, который соответствует объекту window окна, из которого было открыто наше. с его помощью можно сделать рефреш.и ещё вопрос: как перед закрытием этого окна передать обновление другой странице?
null
просто запусти это и увидишь как ))т. е. пользователь, надавив на кнопку, долго ждет пока загрузится документ с результатом (сервер долго не отвечает - он считает факториал), затем получает страничку со текстом "Вычисляем факториал большого числа уже посчитано 100% факториала...", которая тут же закрывает окно. так?
хм...
пока интеграл считается, пользователь видит сколько процентов уже посчитано. этого мы добиваемся, выключая буферизацию вывода в пхп и используя тот факт, что браузеры рендерят контент сразу по мере получения его от сервера.
если запустить мой пример, можно будет увидеть постепенное изменение значения % прогресса. наконец, когда доходим до 100% окно закрывается. несколько скачкообразное, но без асинхронных js-запросов более плавного не добиться.
если мой пример, зачем нужно отправлять close(), тебе не понравился, то вот практическая ситуация Магнуса еще лучше это иллюстрирует
а не могли бы Вы код скинуть... а то я не оч силён в джаваскрипте..
opener.???