Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 11.01.2010, 16:38
Новичок на форуме
Отправить личное сообщение для Gorshog Посмотреть профиль Найти все сообщения от Gorshog
 
Регистрация: 11.01.2010
Сообщений: 6

Перехват перехода
Здравствуйте, уважаемые форумчане. У меня возник гигатрудный вопрос.
Дело в том, что на сайте имеется некий интерфейс, динамический, изменяемый, если точнее... несколько ДИВов, которые при наведении меняют цвет заливки случайным образом, постоянно образуя новую цветовую комбинацию. Я хочу, чтобы ее можно было сохранить при переходе в другой пункт меню. Я сделал это при помощи куков. Т.е. при нажатии на кнопочку, комбинация записывается в куки, и подгружается в следующей странице, на которую юзер перешел.
Это не проблема, я уже все сделал. Проблема в другом.
Мне бы хотелось обеспечить ту же функциональность без применения кнопки. Т.е. Юзер поводил по ДИВам, поизменял их цвета, потом вдруг кликнул на другой пункт меню, перешел на соответствующую страницу, а там уже сохраненная комбинация.

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

Может подскажете чего-нибудь интересного? Или вариант с перезаписью, о котором я думал, прокатит?

Заранее спасибо.
Ответить с цитированием
  #2 (permalink)  
Старый 11.01.2010, 16:44
Аватар для subzey
Пионэр
Отправить личное сообщение для subzey Посмотреть профиль Найти все сообщения от subzey
 
Регистрация: 16.11.2009
Сообщений: 1,322

По-идее, Вам может помочь onbeforeunload. Вот, только стóит ли? Запись в куку не такая уж и страшная операция, и если при нормальном серфинге она будет встречаться не более десятка раз, то никаких особых провалов в функциональности Вы не получите.

Как вариант, можно записывать эти данные в window.name — это свойство не меняется при переходе со страницы на страницу.
Ответить с цитированием
  #3 (permalink)  
Старый 11.01.2010, 21:32
Новичок на форуме
Отправить личное сообщение для Gorshog Посмотреть профиль Найти все сообщения от Gorshog
 
Регистрация: 11.01.2010
Сообщений: 6

Спасибо большое.
Правда я не Жава программер, я флешер. Но про window.name почитал в гугле, так и не понял как ее использовать
Вы не могли бы показать простенький пример записи в нее строки текстовой, и пример вытаскивания от туда?
Был бы очень признателен.
Ответить с цитированием
  #4 (permalink)  
Старый 11.01.2010, 21:34
Аватар для B@rmaley.e><e
⊞ Развернуть
Отправить личное сообщение для B@rmaley.e><e Посмотреть профиль Найти все сообщения от B@rmaley.e><e
 
Регистрация: 11.01.2010
Сообщений: 1,810

// запись
window.name = 'я строка';
// чтение
var data = window.name;
alert(data)
Ответить с цитированием
  #5 (permalink)  
Старый 11.01.2010, 21:52
Новичок на форуме
Отправить личное сообщение для Gorshog Посмотреть профиль Найти все сообщения от Gorshog
 
Регистрация: 11.01.2010
Сообщений: 6

О! Все знакомые люди )))
Спасибо. Я уже и сам разобрался, и тут же сюда, поделиться радостью. Оказалось обычная переменная.

Можно еще вот такой вопрос задать?
Если я буду эту переменную переписывать раза по 3-4 в секунду в течении, например 10 секунд, от этого ничего перегружаться не будет? Не расточительно ли?
И на сколько это кроссбраузерно?
Ответить с цитированием
  #6 (permalink)  
Старый 11.01.2010, 21:56
Аватар для B@rmaley.e><e
⊞ Развернуть
Отправить личное сообщение для B@rmaley.e><e Посмотреть профиль Найти все сообщения от B@rmaley.e><e
 
Регистрация: 11.01.2010
Сообщений: 1,810

Сообщение от Gorshog
Если я буду эту переменную переписывать раза по 3-4 в секунду в течении, например 10 секунд, от этого ничего перегружаться не будет? Не расточительно ли?
:-) Во время анимаций идет перезапись свойств DOM узлов по несколько десятков раз в секунду (а еще оно потом рендерится) + мат. вычисления этих самых значений. И ничего, все пока живы

Только я понять не могу, зачем так часто?
Ответить с цитированием
  #7 (permalink)  
Старый 11.01.2010, 21:59
Новичок на форуме
Отправить личное сообщение для Gorshog Посмотреть профиль Найти все сообщения от Gorshog
 
Регистрация: 11.01.2010
Сообщений: 6

Ах да. Я тут уже решил так разобраться

function newColor (id) {
	var logodiv = document.getElementById (id);
	if (logodiv) logodiv.style.backgroundColor = getRandomColor (id);
	setTimeout('saveColors()', 1000);
}


Т.е. не нужно будет сохранять данные по 10 раз в секунду.
Тут ожидание 1000 миллисекунд. Если юзер прекратил елозить по ДИВам, то спустя это время все сохранится, иначе каждый раз функция будет заново запускаться и ничего никуда не сохранит. Не успеет просто.

Как? Нормально? Или есть смыл думать в другом направлении?

Вы извините, Жаваскрипт для меня вообще непостяжим. Поэтому хочется убедиться, что я думаю правильно.
Ответить с цитированием
  #8 (permalink)  
Старый 11.01.2010, 22:01
Новичок на форуме
Отправить личное сообщение для Gorshog Посмотреть профиль Найти все сообщения от Gorshog
 
Регистрация: 11.01.2010
Сообщений: 6

Сообщение от B@rmaley.e><e
Только я понять не могу, зачем так часто?
Это квадратики цветные (ДИВЫ) по ним если водить курсором, они будут менять цвет. А если юзер психопат и начнет насиловать эти квадратики гоняя по ним курсором? Вот поэтому так часто ))
Ответить с цитированием
  #9 (permalink)  
Старый 11.01.2010, 22:01
Интересующийся
Отправить личное сообщение для Michael83 Посмотреть профиль Найти все сообщения от Michael83
 
Регистрация: 05.01.2010
Сообщений: 28

Сообщение от Gorshog
Т.е. Юзер поводил по ДИВам, поизменял их цвета, потом вдруг кликнул на другой пункт меню, перешел на соответствующую страницу, а там уже сохраненная комбинация.
ну так повесьте onclick обработчик на пункт меню или какие другие кнопки/ссылки и сохраняйте в куки. это ведь быстро будет и один раз когда надо. хотя если пользователь просто закроет вкладку то не получится тут на самом деле только onbeforeunload поможет.

еще вариант, я так делаю на одном проекте, сохраняйте по таймеру, причем с отменой таймера, например пользователь изменил что то поставили таймер на 2-3 сек (например), изменил что то еще и таймер еще не сработал отменяете его и засекаете снова.
хотя можно и без отмены таймера

P.S. давно не обновлял вкладку а тут уже оказыватся так ответили
Ответить с цитированием
  #10 (permalink)  
Старый 11.01.2010, 22:08
Аватар для B@rmaley.e><e
⊞ Развернуть
Отправить личное сообщение для B@rmaley.e><e Посмотреть профиль Найти все сообщения от B@rmaley.e><e
 
Регистрация: 11.01.2010
Сообщений: 1,810

Сообщение от Michael83
ну так повесьте onclick обработчик на пункт меню или какие другие кнопки/ссылки
А может тогда сразу на документ? И эвенты плодить не надо, и кучу узлов обходить.

Сообщение от Gorshog
Это квадратики цветные (ДИВЫ) по ним если водить курсором, они будут менять цвет. А если юзер психопат и начнет насиловать эти квадратики гоняя по ним курсором? Вот поэтому так часто ))
Не думаю, что это хоть сколько-нибудь скажется на скорости работы.
Ответить с цитированием
Ответ


Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
перехват событий Раман Events/DOM/Window 17 06.10.2009 09:36
перехват запроса submit, реально ли? kosyak Events/DOM/Window 7 08.06.2009 19:23
Перехват нажатия ctrl+space demi AJAX и COMET 6 11.03.2009 11:03
как сделать ссылку перехода на скрипт bazhan Общие вопросы Javascript 6 04.09.2008 10:56