11.01.2010, 16:38
|
Новичок на форуме
|
|
Регистрация: 11.01.2010
Сообщений: 6
|
|
Перехват перехода
Здравствуйте, уважаемые форумчане. У меня возник гигатрудный вопрос.
Дело в том, что на сайте имеется некий интерфейс, динамический, изменяемый, если точнее... несколько ДИВов, которые при наведении меняют цвет заливки случайным образом, постоянно образуя новую цветовую комбинацию. Я хочу, чтобы ее можно было сохранить при переходе в другой пункт меню. Я сделал это при помощи куков. Т.е. при нажатии на кнопочку, комбинация записывается в куки, и подгружается в следующей странице, на которую юзер перешел.
Это не проблема, я уже все сделал. Проблема в другом.
Мне бы хотелось обеспечить ту же функциональность без применения кнопки. Т.е. Юзер поводил по ДИВам, поизменял их цвета, потом вдруг кликнул на другой пункт меню, перешел на соответствующую страницу, а там уже сохраненная комбинация.
Была идея, делать запись в куки каждый раз, как юзер навел на один из ДИВов, но почему-то мне кажется это будет слишком расточительным. Поэтому хотелось бы как-то идентифицировать тот момент, когда юзер уходит со страницы, чтобы в этот момент, быстренько все записать в куки.
Может подскажете чего-нибудь интересного? Или вариант с перезаписью, о котором я думал, прокатит?
Заранее спасибо.
|
|
11.01.2010, 16:44
|
|
Пионэр
|
|
Регистрация: 16.11.2009
Сообщений: 1,322
|
|
По-идее, Вам может помочь onbeforeunload. Вот, только стóит ли? Запись в куку не такая уж и страшная операция, и если при нормальном серфинге она будет встречаться не более десятка раз, то никаких особых провалов в функциональности Вы не получите.
Как вариант, можно записывать эти данные в window.name — это свойство не меняется при переходе со страницы на страницу.
|
|
11.01.2010, 21:32
|
Новичок на форуме
|
|
Регистрация: 11.01.2010
Сообщений: 6
|
|
Спасибо большое.
Правда я не Жава программер, я флешер. Но про window.name почитал в гугле, так и не понял как ее использовать
Вы не могли бы показать простенький пример записи в нее строки текстовой, и пример вытаскивания от туда?
Был бы очень признателен.
|
|
11.01.2010, 21:34
|
|
⊞ Развернуть
|
|
Регистрация: 11.01.2010
Сообщений: 1,810
|
|
// запись
window.name = 'я строка';
// чтение
var data = window.name;
alert(data)
|
|
11.01.2010, 21:52
|
Новичок на форуме
|
|
Регистрация: 11.01.2010
Сообщений: 6
|
|
О! Все знакомые люди )))
Спасибо. Я уже и сам разобрался, и тут же сюда, поделиться радостью. Оказалось обычная переменная.
Можно еще вот такой вопрос задать?
Если я буду эту переменную переписывать раза по 3-4 в секунду в течении, например 10 секунд, от этого ничего перегружаться не будет? Не расточительно ли?
И на сколько это кроссбраузерно?
|
|
11.01.2010, 21:56
|
|
⊞ Развернуть
|
|
Регистрация: 11.01.2010
Сообщений: 1,810
|
|
Сообщение от Gorshog
|
Если я буду эту переменную переписывать раза по 3-4 в секунду в течении, например 10 секунд, от этого ничего перегружаться не будет? Не расточительно ли?
|
:-) Во время анимаций идет перезапись свойств DOM узлов по несколько десятков раз в секунду (а еще оно потом рендерится) + мат. вычисления этих самых значений. И ничего, все пока живы
Только я понять не могу, зачем так часто?
|
|
11.01.2010, 21:59
|
Новичок на форуме
|
|
Регистрация: 11.01.2010
Сообщений: 6
|
|
Ах да. Я тут уже решил так разобраться
function newColor (id) {
var logodiv = document.getElementById (id);
if (logodiv) logodiv.style.backgroundColor = getRandomColor (id);
setTimeout('saveColors()', 1000);
}
Т.е. не нужно будет сохранять данные по 10 раз в секунду.
Тут ожидание 1000 миллисекунд. Если юзер прекратил елозить по ДИВам, то спустя это время все сохранится, иначе каждый раз функция будет заново запускаться и ничего никуда не сохранит. Не успеет просто.
Как? Нормально? Или есть смыл думать в другом направлении?
Вы извините, Жаваскрипт для меня вообще непостяжим. Поэтому хочется убедиться, что я думаю правильно.
|
|
11.01.2010, 22:01
|
Новичок на форуме
|
|
Регистрация: 11.01.2010
Сообщений: 6
|
|
Сообщение от B@rmaley.e><e
|
Только я понять не могу, зачем так часто?
|
Это квадратики цветные (ДИВЫ) по ним если водить курсором, они будут менять цвет. А если юзер психопат и начнет насиловать эти квадратики гоняя по ним курсором? Вот поэтому так часто ))
|
|
11.01.2010, 22:01
|
Интересующийся
|
|
Регистрация: 05.01.2010
Сообщений: 28
|
|
Сообщение от Gorshog
|
Т.е. Юзер поводил по ДИВам, поизменял их цвета, потом вдруг кликнул на другой пункт меню, перешел на соответствующую страницу, а там уже сохраненная комбинация.
|
ну так повесьте onclick обработчик на пункт меню или какие другие кнопки/ссылки и сохраняйте в куки. это ведь быстро будет и один раз когда надо. хотя если пользователь просто закроет вкладку то не получится тут на самом деле только onbeforeunload поможет.
еще вариант, я так делаю на одном проекте, сохраняйте по таймеру, причем с отменой таймера, например пользователь изменил что то поставили таймер на 2-3 сек (например), изменил что то еще и таймер еще не сработал отменяете его и засекаете снова.
хотя можно и без отмены таймера
P.S. давно не обновлял вкладку а тут уже оказыватся так ответили
|
|
11.01.2010, 22:08
|
|
⊞ Развернуть
|
|
Регистрация: 11.01.2010
Сообщений: 1,810
|
|
Сообщение от Michael83
|
ну так повесьте onclick обработчик на пункт меню или какие другие кнопки/ссылки
|
А может тогда сразу на документ? И эвенты плодить не надо, и кучу узлов обходить.
Сообщение от Gorshog
|
Это квадратики цветные (ДИВЫ) по ним если водить курсором, они будут менять цвет. А если юзер психопат и начнет насиловать эти квадратики гоняя по ним курсором? Вот поэтому так часто ))
|
Не думаю, что это хоть сколько-нибудь скажется на скорости работы.
|
|
|
|