Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: запрос на сохранение документа при его закрытии
 
 автор: rockmachine   (02.09.2005 в 15:55)   письмо автору
 
 

Как сделать так, чтобы при закрытии окна выпадал запрос о сохранении, и при этом - внимание - документ не закрывался до того, как будет дан ответ на запрос.
---------------------------
Замечу, что при использовании обработчика "onUnLoad" для элемента <body>
запрос выдается уже после закрытия окна.

   
 
 автор: codexomega   (02.09.2005 в 19:09)   письмо автору
 
   для: rockmachine   (02.09.2005 в 15:55)
 

Да, действительно...
Вот приведу пример:


<!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>
<title>Closing Windows</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />

<script language="javascript">

function confirmClose(){
    var mes = confirm("Do you want to close window?");
    if(mes == true)
        window.close();
}
</script>
</head>
<body onUnload="confirmClose()">

<form action="" method="post" name="form1">
<p>&nbsp;</p>
<a href="javascript:confirmClose()">Close me</a>
</form>
</body>
</html>


Существует:

OnBeforeLoad()
OnLoad()
OnBeforeUnload()
OnUnload()

И все они осуществляются по очереди, при закрытии и открытии документа.
Проблема ещё в том, что при перезагрузке документа, все действия которые были прикреплены к жизненному циклу документа будут происходить, хотим мы этого или нет, по порядку. Та же конфирмация будет отображаться дважды.И действует она только с ссылкой, тогда как закрытие окна в самом браузере игнорируется, а сделать это скорее всего невозможно, иначе нас сгубили бы рекламные сайты.

   
 
 автор: Crux   (02.09.2005 в 21:07)   письмо автору
 
   для: rockmachine   (02.09.2005 в 15:55)
 

сделать запрос о сохранение... наверное нет...
но вывести запрос о подтверждение закрытия окна можно

<HEAD>
<SCRIPT LANGUAGE="JavaScript">
function CloseWin() {
    event.returnValue = "Вернись!!!"
}
window.onbeforeunload = CloseWin
</SCRIPT>

</HEAD>

только вот эта штука работает далеко не во всех браузерах.

   
 
 автор: rockmachine   (05.09.2005 в 13:39)   письмо автору
 
   для: Crux   (02.09.2005 в 21:07)
 

Грустно. А как тогда реализована процедура сохранения при закрытии окна в
визуальных редакторах типа RichEditor? Ведь там после положительного ответа на запрос происходит сохранение... Видимо, там документ продолжает "жить" и после щелчка по красному крестику, несмотря на то, что редакторы написаны на HTML и JavaScript .
-------------------------------------
К сожалению, код RichEditor закодирован (как ни странно это звучит).

   
 
 автор: Crux   (05.09.2005 в 14:23)   письмо автору
 
   для: rockmachine   (05.09.2005 в 13:39)
 

а что за зверь этот RichEditor, хотелось бы на него посмотреть

   
 
 автор: rockmachine   (05.09.2005 в 15:45)   письмо автору
 
   для: Crux   (05.09.2005 в 14:23)
 

RichEditor - это WYSIWYG-редактор (аббревиатура от "что видишь, то и получаешь").
Доступен по адресу http://richarea.com.
------------------------------
RichEditor - не бесплатный!

   
 
 автор: codexomega   (05.09.2005 в 15:53)   письмо автору
 
   для: Crux   (05.09.2005 в 14:23)
 

http://www.richarea.com/demo/

WYSIWYG редактор. Если посмотреть source страницы, то там действительно полно сложных функций по JavaScript.

   
 
 автор: rockmachine   (05.09.2005 в 16:39)   письмо автору
 
   для: codexomega   (05.09.2005 в 15:53)
 

Да, это вообще скверно, что автор, во-первых, просит денег за продукт, во-вторых,
защищает код и, в-третьих, не объясняет, как это всё работает (что совершенно не удивительно).
----------------------------------
Я стал писать свой WYSIWYG-редактор. И проблема о запросе на сохранение возникла именно отсюда...

   
 
 автор: codexomega   (05.09.2005 в 17:58)   письмо автору
 
   для: rockmachine   (05.09.2005 в 16:39)
 

Могу порадовать.
Вот список всех таких едиторов в Open Source.

http://www.cmsreview.com/WYSIWYG/OpenSource/directory.html

   
 
 автор: rockmachine   (05.09.2005 в 18:22)   письмо автору
 
   для: codexomega   (05.09.2005 в 17:58)
 

Мы не ищем легких путей!

   
 
 автор: codexomega   (05.09.2005 в 19:28)   письмо автору
 
   для: rockmachine   (05.09.2005 в 18:22)
 

Вам ведь нужен источник кода для ориентировки?

   
 
 автор: rockmachine   (06.09.2005 в 15:11)   письмо автору
 
   для: codexomega   (05.09.2005 в 19:28)
 

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

   
 
 автор: codexomega   (06.09.2005 в 16:15)   письмо автору
 
   для: rockmachine   (06.09.2005 в 15:11)
 

Пройдясь по Интернету, просмотрев информацию на таких серьёзных форумах как Java SUN и Experts-Exchange, а также заглянув на сайт Microsoft(JavaScript разработан им), ничего на нашёл кроме похожего на то что предложил Crux.


<body onLoad="closing=true" onBeforeUnload="if(closing)return 'All data wil be lost';">


Всё работает и довольно хорошо.

А какое сообщение выдает Rich Editor при закрытии окна?

   
 
 автор: rockmachine   (06.09.2005 в 16:35)   письмо автору
 
   для: codexomega   (06.09.2005 в 16:15)
 

Что-то вроде "Сохранить или выйти без сохранения?: ok, cancel" (естественно, на английском) . При этом, если нажать "ok", документ сохраняется...
-------------------------------------------
Если Вы мне предложете использовать XML, я откажусь.
Важно: мне вовсе не нужно, чтобы браузер после закрытия выкидывал безсмысленные alert'ы, мне нужно, чтобы момент закрытия окна можно было как-то оттянуть после щелчка на красном крестике.

   
 
 автор: Crux   (06.09.2005 в 17:27)   письмо автору
 
   для: rockmachine   (06.09.2005 в 16:35)
 

>Что-то вроде "Сохранить или выйти без сохранения?"
в таком случае я не вижу каких-либо трудностей.

<HTML>
<HEAD>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<SCRIPT LANGUAGE="JavaScript">
function funSave()
    {
    alert("Здесь осуществляется код по сохранению.")
    }
function CloseWin()
    {
    var bool=confirm("Сохранить или выйти без сохранения?")
    if(bool) funSave()
    }

</SCRIPT>

</HEAD>
<BODY onBeforeUnload="CloseWin()">

</BUTTON>
</BODY>
</HTML>

конечно окно закроется, но только после выполнения функции funSave()

   
 
 автор: rockmachine   (06.09.2005 в 18:01)   письмо автору
 
   для: Crux   (06.09.2005 в 17:27)
 

Чувствую себя законченным кретином! Обработчик onBeforeClose работает именно так, как надо. Я не заметил этого раньше из-за ошибки в коде.
-------------------------------
Нечего сказать в своё оправдание.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования