Модераторы: Sardar, Aliance

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Слои и location.reload() нужна помощь, сделать слой visible после reload 
:(
    Опции темы
tempman
Дата 17.9.2007, 14:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 43
Регистрация: 15.12.2006

Репутация: нет
Всего: нет



Здравствуйте.
Помогите , пожалуйста , найти вариант  решения.
Имеется html  страница со слоями . По умолчанию  когда страница подгружается  все слои display="none".  Тыкая на определенные кнопки на странице можно какой либо из слоев сделать display="block" (все остальные становятся display="none", т.е. видимый слой всегда только один) .
На странице имеется таймер , по истечению которого происходит window.location.reload().  
Возник вопрос , как при reload страницы оставить видимым слой, который в данный момент был display="bock".

вариант  типа :
Код

<script LANGUAGE="JScript">
<!-- hide

function showLayer(layerName){
   hideLayerAll(); // прячет все слои
   document.getElementById(layerName).style.display='block';
}

function myreload()
{
window.location.reload();

showLayer('limits'); //  фун-ия showlayer выводит слой по id
}

// -->
</script>
<body onLoad="setTimeout(myreload,30000)" >

</body>




не работает (то есть страница релоадится, но слой после этого уже не показывается нужный)


а такой вариант :
Код

<script LANGUAGE="JScript">
<!-- hide

function showLayer(layerName){
   hideLayerAll(); // прячет все слои
   document.getElementById(layerName).style.display='block';
}

function myreload()
{
window.location.reload();
//###################
alert("Обновление");                 // разница вариантов только тут - появился  alert()
//###################
showLayer('limits'); //  фун-ия showlayer выводит слой по id
}

// -->
</script>
<body onLoad="setTimeout(myreload,30000)" >

</body>



после релоада страницы  выдвет алерт окно, тыкая на ок в котором на странице появляется  нужный слой.
Но тыкать каждый  раз на кнопку не подходит.


Помогите с вариантом решения  пожалуйста.

PM MAIL   Вверх
dsCode
Дата 17.9.2007, 15:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 565
Регистрация: 8.9.2007
Где: Saint-Petersburg

Репутация: 19
Всего: 26



tempman, хех =) странно... где это сохраняется этот код, если он выполняется после перезагрузки страницы? Примерное объяснение причины есть: в первом случае "limits" еще не успевает догрузиться, а во тором - alert(...) притормаживает основной процесс и "limits" догружается. Но мне интересно не это, интересно, почему код, ниже window.location.reload(); срабатывает после перезагрузки страницы?

А вообще, решением может быть - по клику div'а сохранять его id в куках, например, а в onLoad'e страницы устанавливать этот div, взяв id из куки.


--------------------
the .code inside
:my music
PM MAIL WWW ICQ Jabber   Вверх
tempman
Дата 17.9.2007, 15:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 43
Регистрация: 15.12.2006

Репутация: нет
Всего: нет



Цитата(dsCode @  17.9.2007,  15:23 Найти цитируемый пост)
А вообще, решением может быть - по клику div'а сохранять его id в куках, например, а в onLoad'e страницы устанавливать этот div, взяв id из куки. 


такой вариатн   уже рассматривался.
так же как и window.replace () с указанием в строке адреса параметра div=limits и дальнейшей обработки его в пхп который выдаст штмл страницу с уже видимым слоем.

но все это немного через попу.

хотелось бы   элегантно и просто smile

Это сообщение отредактировал(а) tempman - 17.9.2007, 15:48
PM MAIL   Вверх
SelenIT
Дата 17.9.2007, 15:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


баг форума
****


Профиль
Группа: Завсегдатай
Сообщений: 3996
Регистрация: 17.10.2006
Где: Pale Blue Dot

Репутация: 49
Всего: 401



tempman, элегантнее, чем через куки, боюсь, не получится. Фактически, когда Вы перегружаете страницу манипуляциями с location, старая страница со всей DOM и скриптами, строго говоря, перестает существовать. А полагаться на скрипты уже несуществующей страницы так же ненадежно, как и на любых других призраков...


--------------------
Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму!
PM MAIL   Вверх
tempman
Дата 17.9.2007, 15:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 43
Регистрация: 15.12.2006

Репутация: нет
Всего: нет



Цитата(SelenIT @  17.9.2007,  15:49 Найти цитируемый пост)
tempman, элегантнее, чем через куки, боюсь, не получится. Фактически, когда Вы перегружаете страницу манипуляциями с location, старая страница со всей DOM и скриптами, строго говоря, перестает существовать. А полагаться на скрипты уже несуществующей страницы так же ненадежно, как и на любых других призраков... 



спасибо ... я пытался сам  объяснить это начальнику,   надеюсь хоть общественому мнению он поверит smile))
остается  засада с  выключенными кукисами в браузере.

правильно - а нефик отключать!!! smile
PM MAIL   Вверх
dsCode
Дата 17.9.2007, 16:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 565
Регистрация: 8.9.2007
Где: Saint-Petersburg

Репутация: 19
Всего: 26



tempman, 
Цитата(tempman @  17.9.2007,  15:43 Найти цитируемый пост)
но все это немного через попу

и в чем тут попа? Если номер таба (дива) нигде (на сервере) у Вас не сохраняется, дивы показываются/скрываются клиентом - где еще сохранить номер нужного дива, чтобы при релоаде (!) когда страница перегенерится полностью (!) включая javascript код, показывать нужный див? Где, если не в куках?

P.S.: кто-нибудь, все-таки, может объяснить, почему код, ниже window.location.reload(); срабатывает после перезагрузки страницы?



Это сообщение отредактировал(а) dsCode - 17.9.2007, 16:05


--------------------
the .code inside
:my music
PM MAIL WWW ICQ Jabber   Вверх
tempman
Дата 17.9.2007, 16:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 43
Регистрация: 15.12.2006

Репутация: нет
Всего: нет



Цитата(dsCode @  17.9.2007,  16:03 Найти цитируемый пост)
P.S.: кто-нибудь, все-таки, может объяснить, почему код, ниже window.location.reload(); срабатывает после перезагрузки страницы?

я нет smile

по поводу кукисов - спасибоsmile
нашел

Это сообщение отредактировал(а) tempman - 17.9.2007, 16:14
PM MAIL   Вверх
ksnk
Дата 17.9.2007, 16:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 84
Всего: 386



tempman, можно совместить оба способа - хранение в куках и передачу номера DIV'а в адресной строке. Нужно просто проверить возможность установки кукисов (установив, прочитав и сравнив) и если они не работают - использовать второй вариант.


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
tempman
Дата 17.9.2007, 16:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 43
Регистрация: 15.12.2006

Репутация: нет
Всего: нет



Цитата(ksnk @  17.9.2007,  16:47 Найти цитируемый пост)
tempman, можно совместить оба способа - хранение в куках и передачу номера DIV'а в адресной строке. Нужно просто проверить возможность установки кукисов (установив, прочитав и сравнив) и если они не работают - использовать второй вариант. 


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

есть еще вариант  сделать   форму с хиден полем , в котором   яваскриптом писать    id  видимого слоя  и  вместо релоада  делать   submit()   в себя же.


вопщем, какой вариант будет лучше?
PM MAIL   Вверх
ksnk
Дата 17.9.2007, 17:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 84
Всего: 386



Кукисы- лучше, так как при скрытой форме експлорер будет тебя о чем-то странном просить, когда ты нажмешь на кнопку релод, какие-то подозрительнве данные куда-то послать smile... 


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
tempman
Дата 17.9.2007, 17:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 43
Регистрация: 15.12.2006

Репутация: нет
Всего: нет



Цитата(ksnk @  17.9.2007,  17:00 Найти цитируемый пост)
Кукисы- лучше, так как при скрытой форме експлорер будет тебя о чем-то странном просить, когда ты нажмешь на кнопку релод, какие-то подозрительнве данные куда-то послать smile...  


кукисы не юзаем потому что  у тех кому пишем в браузерах   кукисы отключены (пишем  для внутренних нужд организации)
а если метод в этой форме будет гет а не пост?
вроде когда    все параметры в строке  адреса - он эту табличку не выводит, или все же выкидывает?

Это сообщение отредактировал(а) tempman - 17.9.2007, 17:20
PM MAIL   Вверх
ksnk
Дата 17.9.2007, 17:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 84
Всего: 386



tempman, Тогда не понятно, чем этот метод отличается от простой передачи в адресной строке. Результат, практически тот-же - грязная адресная строка, вот разве что телодвижения немного различаются...


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
tempman
Дата 17.9.2007, 17:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 43
Регистрация: 15.12.2006

Репутация: нет
Всего: нет



Цитата(ksnk @  17.9.2007,  17:46 Найти цитируемый пост)
tempman, Тогда не понятно, чем этот метод отличается от простой передачи в адресной строке. Результат, практически тот-же - грязная адресная строка, вот разве что телодвижения немного различаются... 


да различее действительно минимальноsmile) 
короче ясно ,   вариантов не очень много для выбораsmile
PM MAIL   Вверх
Stampede
Дата 17.9.2007, 21:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Гносеолог
**


Профиль
Группа: Участник Клуба
Сообщений: 963
Регистрация: 25.4.2005
Где: Calgary, Alberta, Canada

Репутация: 4
Всего: 144



Ха-ха, смотрите-ка какую интересную штучку я щас обнаружил.

Вкратце ход мысли был примерно таков: хорошо, после перезагрузки страницы весь старый DOM прекращает свое существование. Но постойте, ведь кроме document есть и более глобальные объекты! Как, например, насчет window?

Ну и вот, стал я, значить, пытаться присваивать разные проперти: window.stuff = 'abc'  и пр. Смотрю - не присваиваются.

Ну-ну, подумал я про себя. Типа, думаете, защитились, запретили присвоение кастомных пропертей? Ничо, на всякую хитрую попу найдется болт с резьбой. Какие там у нас есть еще глобальные объекты?

Попробовал функцию alert. Выяснилось, что свойства цепляются нормально, но при перезагрузке теряются.

Попробовал еще какие-то объекты, и вдруг - ХОБА! Объект navigator выдал искомое поведение! Скопируйте себе на любую страницу, в любое место вот такой код:

Код

<script type="text/javascript">
if (navigator.stuff) {
    navigator.stuff = navigator.stuff + 1;
}
else {
    navigator.stuff = +1;
}

document.write('navigator.stuff=' + navigator.stuff);
</script>


Сделали? А теперь понажимайте рефреш...

Видим последовательно увеличивающийся счетчик. Так и подмывает воскликнуть фразу из анекдота: "А ручки-то вот они!" (с)

Тем, кто-то еще не до конца осознал всю важность этого открытия: дело, понятно, не в счетчике. Дело в том, что мы таким образом получаем возможность передавать от страницы к странице какую угодно инфу и в каком угодно объеме! Безо всяких кукисов!

Да ведь это открывает простор для таких новых трюков, что аж дух захватывает!

Но не спешите радоваться, господа. Как говорил Лис в Маленьком Принце, "нет в мире совершенства".

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

А вот теперь самый главный облом: это работает только в Фаерфаксе. Ни в Опере, ни в Осле подобного эффекта добиться не удалось.

И тем не менее... Кто сказал, что свет сошелся клином на объекте navigator? Есть ведь немало и других, не менее глобальных объектов, а у них - встроенные свойства, которые, возможно, не переинициализируются со сменой страницы. И кто знает, не оставили ли разработчики по недосмотру (или шутки ради) какую-нибудь лазейку для передачи инфы между страницами, а то и между сайтами? И пусть эти объекты-лазейки разнятся от браузера к браузеру - ничего, мы напишем тоненькую обертку, скрывающую детали, и назовем ее просто и скромно: bridge.js! И посвятим ее форуму Винград!

Так она и прогремит на весь мир: Vingrad Bridge smile

А что, слабо? Кто желает поучаствовать - прошу записываться smile



--------------------
"If you want something done right, do it yourself"
По секрету: выучить английский - реально!
PM WWW   Вверх
dsCode
Дата 17.9.2007, 22:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 565
Регистрация: 8.9.2007
Где: Saint-Petersburg

Репутация: 19
Всего: 26



Stampede, хм... Интересная находка. Причем, проперть сохраняется в любом "сайте" (файле - я открывал два файла в одном табе/окне) - stuff правильно был отображен в обоих. Хех =)) Вот это, действительно, интересно. Кстати, так же, именно в FF элементы формы сохраняют свои значения после F5 (например, был пустой <input type="text" />, вводим значение, обновляем - оно там), правда после Ctrl-F5 это не действует. Но здесь.. И после Ctrl-F5 проперть на месте. Ха-ха =) Можно порыться в js самой мозилы - может там что интересное найдется. Еще - stuff, естественно, исчезает при открытии страницы в новом табе/странице - там свой объект navigator создался.


--------------------
the .code inside
:my music
PM MAIL WWW ICQ Jabber   Вверх
Ответ в темуСоздание новой темы Создание опроса
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию.
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.2261 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.