Перехват перехода
Здравствуйте, уважаемые форумчане. У меня возник гигатрудный вопрос.
Дело в том, что на сайте имеется некий интерфейс, динамический, изменяемый, если точнее... несколько ДИВов, которые при наведении меняют цвет заливки случайным образом, постоянно образуя новую цветовую комбинацию. Я хочу, чтобы ее можно было сохранить при переходе в другой пункт меню. Я сделал это при помощи куков. Т.е. при нажатии на кнопочку, комбинация записывается в куки, и подгружается в следующей странице, на которую юзер перешел. Это не проблема, я уже все сделал. Проблема в другом. Мне бы хотелось обеспечить ту же функциональность без применения кнопки. Т.е. Юзер поводил по ДИВам, поизменял их цвета, потом вдруг кликнул на другой пункт меню, перешел на соответствующую страницу, а там уже сохраненная комбинация. Была идея, делать запись в куки каждый раз, как юзер навел на один из ДИВов, но почему-то мне кажется это будет слишком расточительным. Поэтому хотелось бы как-то идентифицировать тот момент, когда юзер уходит со страницы, чтобы в этот момент, быстренько все записать в куки. Может подскажете чего-нибудь интересного? Или вариант с перезаписью, о котором я думал, прокатит? Заранее спасибо. |
По-идее, Вам может помочь onbeforeunload. Вот, только стóит ли? Запись в куку не такая уж и страшная операция, и если при нормальном серфинге она будет встречаться не более десятка раз, то никаких особых провалов в функциональности Вы не получите.
Как вариант, можно записывать эти данные в window.name — это свойство не меняется при переходе со страницы на страницу. |
Спасибо большое.
Правда я не Жава программер, я флешер. Но про window.name почитал в гугле, так и не понял как ее использовать Вы не могли бы показать простенький пример записи в нее строки текстовой, и пример вытаскивания от туда? Был бы очень признателен. |
// запись window.name = 'я строка'; // чтение var data = window.name; alert(data) |
О! Все знакомые люди )))
Спасибо. Я уже и сам разобрался, и тут же сюда, поделиться радостью. Оказалось обычная переменная. Можно еще вот такой вопрос задать? Если я буду эту переменную переписывать раза по 3-4 в секунду в течении, например 10 секунд, от этого ничего перегружаться не будет? Не расточительно ли? И на сколько это кроссбраузерно? |
Цитата:
Только я понять не могу, зачем так часто? |
Ах да. Я тут уже решил так разобраться
function newColor (id) { var logodiv = document.getElementById (id); if (logodiv) logodiv.style.backgroundColor = getRandomColor (id); setTimeout('saveColors()', 1000); } Т.е. не нужно будет сохранять данные по 10 раз в секунду. Тут ожидание 1000 миллисекунд. Если юзер прекратил елозить по ДИВам, то спустя это время все сохранится, иначе каждый раз функция будет заново запускаться и ничего никуда не сохранит. Не успеет просто. Как? Нормально? Или есть смыл думать в другом направлении? Вы извините, Жаваскрипт для меня вообще непостяжим. Поэтому хочется убедиться, что я думаю правильно. |
Цитата:
|
Цитата:
еще вариант, я так делаю на одном проекте, сохраняйте по таймеру, причем с отменой таймера, например пользователь изменил что то поставили таймер на 2-3 сек (например), изменил что то еще и таймер еще не сработал отменяете его и засекаете снова. хотя можно и без отмены таймера P.S. давно не обновлял вкладку а тут уже оказыватся так ответили :) |
Цитата:
Цитата:
|
Часовой пояс GMT +3, время: 01:24. |