|
|
|
| Как сделать так, чтобы при закрытии окна выпадал запрос о сохранении, и при этом - внимание - документ не закрывался до того, как будет дан ответ на запрос.
---------------------------
Замечу, что при использовании обработчика "onUnLoad" для элемента <body>
запрос выдается уже после закрытия окна. | |
|
|
|
|
|
|
|
для: 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> </p>
<a href="javascript:confirmClose()">Close me</a>
</form>
</body>
</html>
|
Существует:
OnBeforeLoad()
OnLoad()
OnBeforeUnload()
OnUnload()
И все они осуществляются по очереди, при закрытии и открытии документа.
Проблема ещё в том, что при перезагрузке документа, все действия которые были прикреплены к жизненному циклу документа будут происходить, хотим мы этого или нет, по порядку. Та же конфирмация будет отображаться дважды.И действует она только с ссылкой, тогда как закрытие окна в самом браузере игнорируется, а сделать это скорее всего невозможно, иначе нас сгубили бы рекламные сайты. | |
|
|
|
|
|
|
|
для: rockmachine
(02.09.2005 в 15:55)
| | сделать запрос о сохранение... наверное нет...
но вывести запрос о подтверждение закрытия окна можно
<HEAD>
<SCRIPT LANGUAGE="JavaScript">
function CloseWin() {
event.returnValue = "Вернись!!!"
}
window.onbeforeunload = CloseWin
</SCRIPT>
</HEAD>
|
только вот эта штука работает далеко не во всех браузерах. | |
|
|
|
|
|
|
|
для: Crux
(02.09.2005 в 21:07)
| | Грустно. А как тогда реализована процедура сохранения при закрытии окна в
визуальных редакторах типа RichEditor? Ведь там после положительного ответа на запрос происходит сохранение... Видимо, там документ продолжает "жить" и после щелчка по красному крестику, несмотря на то, что редакторы написаны на HTML и JavaScript .
-------------------------------------
К сожалению, код RichEditor закодирован (как ни странно это звучит). | |
|
|
|
|
|
|
|
для: rockmachine
(05.09.2005 в 13:39)
| | а что за зверь этот RichEditor, хотелось бы на него посмотреть | |
|
|
|
|
|
|
|
для: Crux
(05.09.2005 в 14:23)
| | RichEditor - это WYSIWYG-редактор (аббревиатура от "что видишь, то и получаешь").
Доступен по адресу http://richarea.com.
------------------------------
RichEditor - не бесплатный! | |
|
|
|
|
|
|
|
для: Crux
(05.09.2005 в 14:23)
| | http://www.richarea.com/demo/
WYSIWYG редактор. Если посмотреть source страницы, то там действительно полно сложных функций по JavaScript. | |
|
|
|
|
|
|
|
для: codexomega
(05.09.2005 в 15:53)
| | Да, это вообще скверно, что автор, во-первых, просит денег за продукт, во-вторых,
защищает код и, в-третьих, не объясняет, как это всё работает (что совершенно не удивительно).
----------------------------------
Я стал писать свой WYSIWYG-редактор. И проблема о запросе на сохранение возникла именно отсюда... | |
|
|
|
|
|
|
|
для: rockmachine
(05.09.2005 в 16:39)
| | Могу порадовать.
Вот список всех таких едиторов в Open Source.
http://www.cmsreview.com/WYSIWYG/OpenSource/directory.html | |
|
|
|
|
|
|
|
для: codexomega
(05.09.2005 в 17:58)
| | Мы не ищем легких путей! | |
|
|
|
|
|
|
|
для: rockmachine
(05.09.2005 в 18:22)
| | Вам ведь нужен источник кода для ориентировки? | |
|
|
|
|
|
|
|
для: codexomega
(05.09.2005 в 19:28)
| | Сложно сказать... Вообще говоря, да. Однако есть у меня странное нежелание скачивать чужие редакторы и смотреть их код... К тому же, если я не ошибаюсь,
в них как раз нет фишки, о которой мы здесь говорим... (почему я в этом так уверен?)
--------------------
Сейчас просмотрел часть редакторов по Вашей ссылке. Точно - нет! И вообще, бесплатные редакторы настолько аскетичны, что вряд ли могут быть полезны при их использовании или изучении. | |
|
|
|
|
|
|
|
для: 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 при закрытии окна? | |
|
|
|
|
|
|
|
для: codexomega
(06.09.2005 в 16:15)
| | Что-то вроде "Сохранить или выйти без сохранения?: ok, cancel" (естественно, на английском) . При этом, если нажать "ok", документ сохраняется...
-------------------------------------------
Если Вы мне предложете использовать XML, я откажусь.
Важно: мне вовсе не нужно, чтобы браузер после закрытия выкидывал безсмысленные alert'ы, мне нужно, чтобы момент закрытия окна можно было как-то оттянуть после щелчка на красном крестике. | |
|
|
|
|
|
|
|
для: 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() | |
|
|
|
|
|
|
|
для: Crux
(06.09.2005 в 17:27)
| | Чувствую себя законченным кретином! Обработчик onBeforeClose работает именно так, как надо. Я не заметил этого раньше из-за ошибки в коде.
-------------------------------
Нечего сказать в своё оправдание. | |
|
|
|