Форум dkLab и Denwer
Здесь общаются Web-разработчики.
Генеральный спонсор:
Хостинг «Джино»

Событие при переходе на другую страницу (Nejenka)
Goto page 1, 2  Next
Author Message
Nejenka
Участник форума



Joined: 21 Nov 2006
Posts: 51
Карма: 0
   поощрить/наказать


PostPosted: Mon Feb 05, 2007 1:52 pm ()
   Post subject: Событие при переходе на другую страницу
Reply with quote

Добрый день!
Задача у меня такая: у меня есть страничка на которой выводится табличка с постраничным выводом из БД.
В табличке одна колонка состоит из чекбоксов, - эти данные должны заноситься в БД.
При переходе на следующую страницу таблички данные сохраняются.
А вот если пользователь нажмет какую-то ссылку в меню - то данные конечно не сохранятся... и даже никого предупреждения не выйдет..
Я думала использовать событие UnLoad - но оно вешается только на BODY и FRAMESET.
FRAMESET - я не использую, а BODY у меня описано в отдельной jsp-ке, и загружается для всех страниц!
может кто-нибудь знает решение? спасибо!
Back to top
View user's profile Send private message
WingedFox
Профессионал



Joined: 29 Apr 2003
Posts: 4064
Карма: 268
   поощрить/наказать

Location: Питер

PostPosted: Mon Feb 05, 2007 2:04 pm (спустя 12 минут; написано за 24 секунды)
   Post subject:
Reply with quote

Nejenka
Используйте DOM - attachEvent и addEventListener.
Back to top
View user's profile Send private message
Nejenka
Участник форума



Joined: 21 Nov 2006
Posts: 51
Карма: 0
   поощрить/наказать


PostPosted: Mon Feb 05, 2007 2:09 pm (спустя 5 минут)
   Post subject:
Reply with quote

WingedFox, извините пожалуйста, я не поняла для чего? не могли бы вы мне объяснить, как вы предлагаете их использовать?
(хочу понять смысл вашей идеи..)
Back to top
View user's profile Send private message
WingedFox
Профессионал



Joined: 29 Apr 2003
Posts: 4064
Карма: 268
   поощрить/наказать

Location: Питер

PostPosted: Mon Feb 05, 2007 2:20 pm (спустя 10 минут; написано за 28 секунд)
   Post subject:
Reply with quote

Для установки обработчика события на body.
Back to top
View user's profile Send private message
Nejenka
Участник форума



Joined: 21 Nov 2006
Posts: 51
Карма: 0
   поощрить/наказать


PostPosted: Mon Feb 05, 2007 2:41 pm (спустя 20 минут)
   Post subject:
Reply with quote

т.е. Вы предлагаете, ставить событие на body пока мы находимся на нужной мне странице, а потом его от туда убирать? я Вас правильно поняла?
Back to top
View user's profile Send private message
WingedFox
Профессионал



Joined: 29 Apr 2003
Posts: 4064
Карма: 268
   поощрить/наказать

Location: Питер

PostPosted: Mon Feb 05, 2007 2:50 pm (спустя 9 минут; написано за 38 секунд)
   Post subject:
Reply with quote

Nejenka
Убираться оно будет самостоятельно.
В остальном - именно так.
Back to top
View user's profile Send private message
Nejenka
Участник форума



Joined: 21 Nov 2006
Posts: 51
Карма: 0
   поощрить/наказать


PostPosted: Mon Feb 05, 2007 2:56 pm (спустя 5 минут)
   Post subject:
Reply with quote

Спасибо большое, попробую!
Back to top
View user's profile Send private message
WingedFox
Профессионал



Joined: 29 Apr 2003
Posts: 4064
Карма: 268
   поощрить/наказать

Location: Питер

PostPosted: Mon Feb 05, 2007 3:00 pm (спустя 4 минуты; написано за 4 секунды)
   Post subject:
Reply with quote

Пожалуйста.
Back to top
View user's profile Send private message
Dark-Demon
Участник форума
Banned


Joined: 04 Feb 2007
Posts: 45
Карма: -3
   поощрить/наказать

Location: spb

PostPosted: Mon Feb 05, 2007 9:24 pm (спустя 6 часов 24 минуты; написано за 40 секунд)
   Post subject:
Reply with quote

я бы на вашем месте просто сохранил бы эту инфу в куках (при изменении значения чекбокса) и не парился...
Back to top
View user's profile Send private message
Nejenka
Участник форума



Joined: 21 Nov 2006
Posts: 51
Карма: 0
   поощрить/наказать


PostPosted: Tue Feb 06, 2007 8:58 am (спустя 11 часов 33 минуты)
   Post subject:
Reply with quote

Dark-Demon, я в JavaScript не очень.. - поэтому мне совсем не понятно то , что Вы хотели мне сказать...

WingedFox, у меня никак не получается сделать так, чтобы выдавалось сообщение о предупреждении именно тогда, когда мне это нужно..
У меня получается две ошибки : 1) событие срабатывает, как только я начинаю грузить эту страницу, 2) не срабатывает, когда я ухожу с нее..
Пробовала сделать так:

 <SCRIPT language=JavaScript><!--
   window.onUnload = alert("Сообщение!");
//-->
</SCRIPT>

и так:

 <SCRIPT language=JavaScript><!--
   window.attachEvent("onUnload", alert("Сообщение!"));
//-->
</SCRIPT>

и так:

 <SCRIPT language=JavaScript><!--
    function DenyWindow() {
        window.addEventListener("onUnload", alert("Сообщение!"));
    }
    window.addEventListener("onload", DenyWindow());
//-->
</SCRIPT>

результат везде один и тот же.. видимо все-таки я не поняла Вашу идею.. :-(
Back to top
View user's profile Send private message
AKS
Участник форума



Joined: 28 Dec 2005
Posts: 1174
Карма: 102
   поощрить/наказать


PostPosted: Tue Feb 06, 2007 9:32 am (спустя 34 минуты; написано за 2 минуты 32 секунды)
   Post subject:
Reply with quote

Nejenka
Пока WingedFox спит, попытаюсь прояснить ситуацию своими силами. У Вас alert, также как DenyWindow, " срабатывает, как только я начинаю грузить эту страницу" потому что стоит вызов функции (), т.е. срабатывает не событие, а вызов. Надо так:
Code (JavaScript): скопировать код в буфер обмена
window.addEventListener("onunload", DenyWindow);
А в DenyWindow пусть будет alert...
Back to top
View user's profile Send private message Send e-mail
Nejenka
Участник форума



Joined: 21 Nov 2006
Posts: 51
Карма: 0
   поощрить/наказать


PostPosted: Tue Feb 06, 2007 9:53 am (спустя 21 минуту)
   Post subject:
Reply with quote

Спасибо огромное!
Back to top
View user's profile Send private message
Nejenka
Участник форума



Joined: 21 Nov 2006
Posts: 51
Карма: 0
   поощрить/наказать


PostPosted: Tue Feb 06, 2007 9:59 am (спустя 5 минут)
   Post subject:
Reply with quote

только вот у меня в Мозилле не работает... с этим можно что-то поделать?
Back to top
View user's profile Send private message
Dark-Demon
Участник форума
Banned


Joined: 04 Feb 2007
Posts: 45
Карма: -3
   поощрить/наказать

Location: spb

PostPosted: Tue Feb 06, 2007 10:12 am (спустя 12 минут; написано за 3 минуты 22 секунды)
   Post subject:
Reply with quote

Nejenka, куки - это некоторые данные, которые хранятся у клиента и посылаются им в http заголовках. вешай на событие onchange чекпокса код, который будет изменять соответствующую куку (например 'checkbox[13]', для 13-го чекбокса). функции для работы с куками найти не сложно, навскидку: www.codenet.ru/webmast/js/Cookies.php
в самом php куки можно получить через $_COOKIE и установить через setcookie.
Back to top
View user's profile Send private message
WingedFox
Профессионал



Joined: 29 Apr 2003
Posts: 4064
Карма: 268
   поощрить/наказать

Location: Питер

PostPosted: Tue Feb 06, 2007 10:27 am (спустя 14 минут; написано за 3 минуты 15 секунд)
   Post subject:
Reply with quote

Nejenka
1. Для мозиллы не требуется приставка "on", т.е. addEventListener('unload',...).
2. Для установки обработчика не нужно дожидаться события onload.
3. Пользоваться inline обработчиками (window.onunload и т.п.) - плохая практика, т.к. каждый новый обработчик затирает старый.
Back to top
View user's profile Send private message
Nejenka
Участник форума



Joined: 21 Nov 2006
Posts: 51
Карма: 0
   поощрить/наказать


PostPosted: Tue Feb 06, 2007 11:16 am (спустя 48 минут)
   Post subject:
Reply with quote

Вы знаете, а у меня в Мозилле с "unload" тоже не работает.. причем, когда я писала другой скрипт, я использовала "onload" - так работало!
и еще я использую attachEvent ... по пунктам 2 и 3 полностью согласна - просто искала выход из создавшегося положения , чего только не придумаешь в таких ситуациях...
Back to top
View user's profile Send private message
AKS
Участник форума



Joined: 28 Dec 2005
Posts: 1174
Карма: 102
   поощрить/наказать


PostPosted: Tue Feb 06, 2007 12:40 pm (спустя 1 час 24 минуты; написано за 1 минуту 3 секунды)
   Post subject:
Reply with quote

Nejenka
Вы, наверно, третий параметр не указываете - window.addEventListener("unload", DenyWindow, false)...
Back to top
View user's profile Send private message Send e-mail
Nejenka
Участник форума



Joined: 21 Nov 2006
Posts: 51
Карма: 0
   поощрить/наказать


PostPosted: Tue Feb 06, 2007 1:03 pm (спустя 22 минуты)
   Post subject:
Reply with quote

Точно! Я про него совсем забыла, а сайт которым я пользовалась для справки не работал! а вот еще вопрос - а можно после того , как я нажму Отменить в сообщении, вернуться на мою страничку? только чтобы пометки в чекбоксах остались на своих местах - я имею ввиду, мне не надо заново загружать эту страницу...
Back to top
View user's profile Send private message
WingedFox
Профессионал



Joined: 29 Apr 2003
Posts: 4064
Карма: 268
   поощрить/наказать

Location: Питер

PostPosted: Tue Feb 06, 2007 1:16 pm (спустя 13 минут; написано за 1 минуту 50 секунд)
   Post subject:
Reply with quote

Nejenka
А вот это уже делается посредством куков.
Нужно сохранить в них информацию о выделенных чекбоксах, затем при загрузке страницы (но не событии onload, т.к. оно не везде срабатывает при нажатии на "back") восстановить выделение.
Back to top
View user's profile Send private message
Nejenka
Участник форума



Joined: 21 Nov 2006
Posts: 51
Карма: 0
   поощрить/наказать


PostPosted: Tue Feb 06, 2007 1:40 pm (спустя 24 минуты)
   Post subject:
Reply with quote

понятно.. буду изучать куки.. а какую-нить хорошую ссылку с элементарным примером не дадите?
Back to top
View user's profile Send private message
WingedFox
Профессионал



Joined: 29 Apr 2003
Posts: 4064
Карма: 268
   поощрить/наказать

Location: Питер

PostPosted: Tue Feb 06, 2007 1:56 pm (спустя 16 минут; написано за 1 минуту 25 секунд)
   Post subject:
Reply with quote

Ссылку не дам, ибо не знаю, а пример - пожалуйста:
Code (JavaScript): скопировать код в буфер обмена
var cookieId = 'usermemberoflist';
if (Cookie.get(cookieId)) {
    var arr = Cookie.get(cookieId);
    arr = arr.split(",");
    arr = availablegroups.getOptionsNames(arr);
    availablegroups.selectOnlyMatchingOptions(new RegExp("^("+RegExp.escape(arr)+")$"));
    availablegroups.moveSelectedOptions(memberofgroups);
    memberofgroups.unselectAllOptions();
}
Библиотеку для работы с куками можете взять из BrowserExtensions (DOM, Object, Array, ...) (forum.dklab.ru/js/advises/BrowserextensionsDomObjectArray.html)
Back to top
View user's profile Send private message
Nejenka
Участник форума



Joined: 21 Nov 2006
Posts: 51
Карма: 0
   поощрить/наказать


PostPosted: Tue Feb 06, 2007 2:05 pm (спустя 8 минут)
   Post subject:
Reply with quote

Спасибо за помощь! Буду разбираться!
Back to top
View user's profile Send private message
Dark-Demon
Участник форума
Banned


Joined: 04 Feb 2007
Posts: 45
Карма: -3
   поощрить/наказать

Location: spb

PostPosted: Wed Feb 07, 2007 12:05 am (спустя 9 часов 59 минут; написано за 54 секунды)
   Post subject:
Reply with quote

Nejenka, я пишу невидимыми буквами? :)
WingedFox wrote:
Нужно сохранить в них информацию о выделенных чекбоксах, затем при загрузке страницы (но не событии onload, т.к. оно не везде срабатывает при нажатии на "back") восстановить выделение.
зачем скриптом, если это вполне можно сделать на сервере?
Back to top
View user's profile Send private message
Kupuyc
Участник форума



Joined: 31 Mar 2006
Posts: 146
Карма: 5
   поощрить/наказать


PostPosted: Wed Feb 07, 2007 6:05 am (спустя 6 часов 17 секунд; написано за 4 минуты 28 секунд)
   Post subject:
Reply with quote

Dark-Demon wrote:
Nejenka, я пишу невидимыми буквами? :)
WingedFox wrote:
Нужно сохранить в них информацию о выделенных чекбоксах, затем при загрузке страницы (но не событии onload, т.к. оно не везде срабатывает при нажатии на "back") восстановить выделение.
зачем скриптом, если это вполне можно сделать на сервере?
А если сабмита формы с чекбоксами повлекшего уход со страницы формы не происходило? Если нет формы вообще? Если нет php? Сервера с поддержкой cgi/!cgi? И еще... php работу с куками Вы в своем предыдущем посте лишь "мазнули" словом "кстати", советовав, большей частью, js реализации. Последовательность?
Back to top
View user's profile Send private message
Nejenka
Участник форума



Joined: 21 Nov 2006
Posts: 51
Карма: 0
   поощрить/наказать


PostPosted: Wed Feb 07, 2007 7:08 am (спустя 1 час 3 минуты)
   Post subject:
Reply with quote

Dark-Demon и Kupuyc, я действительно не пользуюсь php , я пишу на Java , но как правильно заметил Kupuyc - проблема в том, что сабмита формы не происходит, когда я ухожу по ссылке на другую страницу - в этом-то и проблема.. поэтому я и изучаю куки.. Dark-Demon, спасибо, вашу ссылку с операциями над куками я взяла на заметку!
Back to top
View user's profile Send private message
WingedFox
Профессионал



Joined: 29 Apr 2003
Posts: 4064
Карма: 268
   поощрить/наказать

Location: Питер

PostPosted: Wed Feb 07, 2007 10:22 am (спустя 3 часа 13 минут; написано за 39 секунд)
   Post subject:
Reply with quote

Dark-Demon wrote:
WingedFox wrote:
Нужно сохранить в них информацию о выделенных чекбоксах, затем при загрузке страницы (но не событии onload, т.к. оно не везде срабатывает при нажатии на "back") восстановить выделение.
зачем скриптом, если это вполне можно сделать на сервере?
Особенно забавно сей ответ выглядит в контексте обработки кнопки "Back".
Back to top
View user's profile Send private message
Nejenka
Участник форума



Joined: 21 Nov 2006
Posts: 51
Карма: 0
   поощрить/наказать


PostPosted: Wed Feb 07, 2007 10:37 am (спустя 14 минут)
   Post subject:
Reply with quote

насчет кнопки back - я сначала не обратила на то, что Вы про нее написали, - а разве там и так не сохраняются галочки? зачем что-то дополнительно делать?
Back to top
View user's profile Send private message
WingedFox
Профессионал



Joined: 29 Apr 2003
Posts: 4064
Карма: 268
   поощрить/наказать

Location: Питер

PostPosted: Wed Feb 07, 2007 11:14 am (спустя 37 минут; написано за 13 секунд)
   Post subject:
Reply with quote

Nejenka
Не всегда и не везде, к сожалению.
Back to top
View user's profile Send private message
Nejenka
Участник форума



Joined: 21 Nov 2006
Posts: 51
Карма: 0
   поощрить/наказать


PostPosted: Wed Feb 07, 2007 11:18 am (спустя 4 минуты)
   Post subject:
Reply with quote

а можете сказать, где именно? я никогда с таким не сталкивалась...
Back to top
View user's profile Send private message
Guest






Карма: 388
   поощрить/наказать


PostPosted: Wed Feb 07, 2007 1:13 pm (спустя 1 час 54 минуты)
   Post subject:
Reply with quote

Quote:
А если сабмита формы с чекбоксами повлекшего уход со страницы формы не происходило?
всё останется в куках.
Quote:
Если нет формы вообще? Если нет php?
а зачем тогда чекбоксы?
Quote:
Особенно забавно сей ответ выглядит в контексте обработки кнопки "Back".
согласен :)
Back to top
Nejenka
Участник форума



Joined: 21 Nov 2006
Posts: 51
Карма: 0
   поощрить/наказать


PostPosted: Wed Feb 07, 2007 1:28 pm (спустя 14 минут)
   Post subject:
Reply with quote

я не понимаю, что там такого c Back...

У меня тут попутно еще маленький вопросик появился... у меня кнопка Сохранить стоит disabled, как только я помечаю какой-нибудь чекбокс ставлю disabled = false. Но в IE почему-то сработывает такое только после второй галочки!!! Причем это только видимость - если на нее нажать субмит сработает.. или если нажать просто на страничку, то она уже видима... вот! Никто с таким не сталкивался?
Back to top
View user's profile Send private message
WingedFox
Профессионал



Joined: 29 Apr 2003
Posts: 4064
Карма: 268
   поощрить/наказать

Location: Питер

PostPosted: Wed Feb 07, 2007 1:40 pm (спустя 12 минут; написано за 1 минуту 6 секунд)
   Post subject:
Reply with quote

Nejenka
Не помню. Некоторые версии Мозиллы, некоторые IE и разные установки кеширования страниц.

Можете погулять по сайтам, позаполнять формы и понажимать back/forward -- сами увидите.
Nejenka wrote:
Но в IE почему-то сработывает такое только после второй галочки!!!
Как обрабатываете выбор чекбокса?
Back to top
View user's profile Send private message
Nejenka
Участник форума



Joined: 21 Nov 2006
Posts: 51
Карма: 0
   поощрить/наказать


PostPosted: Wed Feb 07, 2007 1:51 pm (спустя 10 минут)
   Post subject:
Reply with quote

<SCRIPT language=JavaScript><!--
     ....
  function Modify () {
         document.forms.denyForm.elements.saveButton.disabled = false;
     }
     ....
 //-->
 </SCRIPT>

<input TYPE=CHECKBOX name="deny" onchange="javascript:Modify();">

причем в Опере и Мозилле работает нормально ведь!
Back to top
View user's profile Send private message
AKS
Участник форума



Joined: 28 Dec 2005
Posts: 1174
Карма: 102
   поощрить/наказать


PostPosted: Thu Feb 08, 2007 8:45 am (спустя 18 часов 53 минуты; написано за 1 минуту 3 секунды)
   Post subject:
Reply with quote

Nejenka
А Вы специально для IE добавьте еще вот это - onpropertychange="javascript:Modify();"...
Back to top
View user's profile Send private message Send e-mail
Nejenka
Участник форума



Joined: 21 Nov 2006
Posts: 51
Карма: 0
   поощрить/наказать


PostPosted: Thu Feb 08, 2007 8:53 am (спустя 7 минут)
   Post subject:
Reply with quote

Спасибо! Работает! А почему только для IE ? он вроде и в других браузерах не мешает...
Back to top
View user's profile Send private message
AKS
Участник форума



Joined: 28 Dec 2005
Posts: 1174
Карма: 102
   поощрить/наказать


PostPosted: Thu Feb 08, 2007 9:07 am (спустя 14 минут; написано за 1 минуту 29 секунд)
   Post subject:
Reply with quote

"специально для IE" - хотел сказать, чтоб в IE был ожидаемый эффект (а не мешает, т.к. остальные об аттрибуте не знают).
Back to top
View user's profile Send private message Send e-mail
Nejenka
Участник форума



Joined: 21 Nov 2006
Posts: 51
Карма: 0
   поощрить/наказать


PostPosted: Thu Feb 08, 2007 9:12 am (спустя 4 минуты)
   Post subject:
Reply with quote

Тогда понятно! Спасибо!
Back to top
View user's profile Send private message
Nejenka
Участник форума



Joined: 21 Nov 2006
Posts: 51
Карма: 0
   поощрить/наказать


PostPosted: Thu Feb 08, 2007 2:40 pm (спустя 5 часов 27 минут)
   Post subject:
Reply with quote

Начиталась я про куки! Решила попробовать начать делать.. и сразу столкнулась с проблемой, не относящейся к этим кукам...
Мне бы хотелось, чтобы если пользователь не сохранил данные и собрался на другую страницу (событие unload) - ему выдавалось сообщение: "Вы не сохранили данные!!! Продолжить?" . И если он ответит нет, то он тут же вернулся на эту страницу.. - но на событии onload я не знаю, как отправить пользователя на нужную страничку... Никто не подскажет, как это сделать?
Back to top
View user's profile Send private message
WingedFox
Профессионал



Joined: 29 Apr 2003
Posts: 4064
Карма: 268
   поощрить/наказать

Location: Питер

PostPosted: Thu Feb 08, 2007 2:44 pm (спустя 4 минуты; написано за 1 минуту 38 секунд)
   Post subject:
Reply with quote

Nejenka
Есть событие beforeunload.

Можете посмотреть как сделано, например, предупреждение на wiki.splitbrain.org при редактировании страницы.
Back to top
View user's profile Send private message
Nejenka
Участник форума



Joined: 21 Nov 2006
Posts: 51
Карма: 0
   поощрить/наказать


PostPosted: Thu Feb 08, 2007 2:48 pm (спустя 3 минуты)
   Post subject:
Reply with quote

спасибо, только я не могу понять гле на wiki.splitbrain.org - можно редактировать.. не могу найти видимо нужную страницу..
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic All times are GMT + 3 Hours
Goto page 1, 2  Next
Page 1 of 2    Email to a Friend.
You cannot post new topics in this forum. You cannot reply to topics in this forum. You cannot edit your posts in this forum. You cannot delete your posts in this forum. You cannot vote in polls in this forum. You cannot attach files in this forum. You can download files in this forum.
XML