![]() |
|
Модераторы: Sardar, Aliance |
![]()
|
|
| tempman |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 43 Регистрация: 15.12.2006 Репутация: нет Всего: нет |
Здравствуйте.
Помогите , пожалуйста , найти вариант решения. Имеется html страница со слоями . По умолчанию когда страница подгружается все слои display="none". Тыкая на определенные кнопки на странице можно какой либо из слоев сделать display="block" (все остальные становятся display="none", т.е. видимый слой всегда только один) . На странице имеется таймер , по истечению которого происходит window.location.reload(). Возник вопрос , как при reload страницы оставить видимым слой, который в данный момент был display="bock". вариант типа :
не работает (то есть страница релоадится, но слой после этого уже не показывается нужный) а такой вариант :
после релоада страницы выдвет алерт окно, тыкая на ок в котором на странице появляется нужный слой. Но тыкать каждый раз на кнопку не подходит. Помогите с вариантом решения пожалуйста. |
||||
|
|||||
| dsCode |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 565 Регистрация: 8.9.2007 Где: Saint-Petersburg Репутация: 19 Всего: 26 |
tempman, хех =) странно... где это сохраняется этот код, если он выполняется после перезагрузки страницы? Примерное объяснение причины есть: в первом случае "limits" еще не успевает догрузиться, а во тором - alert(...) притормаживает основной процесс и "limits" догружается. Но мне интересно не это, интересно, почему код, ниже window.location.reload(); срабатывает после перезагрузки страницы?
А вообще, решением может быть - по клику div'а сохранять его id в куках, например, а в onLoad'e страницы устанавливать этот div, взяв id из куки. |
|||
|
||||
| tempman |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 43 Регистрация: 15.12.2006 Репутация: нет Всего: нет |
такой вариатн уже рассматривался. так же как и window.replace () с указанием в строке адреса параметра div=limits и дальнейшей обработки его в пхп который выдаст штмл страницу с уже видимым слоем. но все это немного через попу. хотелось бы элегантно и просто Это сообщение отредактировал(а) tempman - 17.9.2007, 15:48 |
|||
|
||||
| SelenIT |
|
|||
![]() баг форума ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3996 Регистрация: 17.10.2006 Где: Pale Blue Dot Репутация: 49 Всего: 401 |
tempman, элегантнее, чем через куки, боюсь, не получится. Фактически, когда Вы перегружаете страницу манипуляциями с location, старая страница со всей DOM и скриптами, строго говоря, перестает существовать. А полагаться на скрипты уже несуществующей страницы так же ненадежно, как и на любых других призраков...
-------------------- Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму! |
|||
|
||||
| tempman |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 43 Регистрация: 15.12.2006 Репутация: нет Всего: нет |
спасибо ... я пытался сам объяснить это начальнику, надеюсь хоть общественому мнению он поверит остается засада с выключенными кукисами в браузере. правильно - а нефик отключать!!! |
|||
|
||||
| dsCode |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 565 Регистрация: 8.9.2007 Где: Saint-Petersburg Репутация: 19 Всего: 26 |
tempman,
и в чем тут попа? Если номер таба (дива) нигде (на сервере) у Вас не сохраняется, дивы показываются/скрываются клиентом - где еще сохранить номер нужного дива, чтобы при релоаде (!) когда страница перегенерится полностью (!) включая javascript код, показывать нужный див? Где, если не в куках? P.S.: кто-нибудь, все-таки, может объяснить, почему код, ниже window.location.reload(); срабатывает после перезагрузки страницы? Это сообщение отредактировал(а) dsCode - 17.9.2007, 16:05 |
|||
|
||||
| tempman |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 43 Регистрация: 15.12.2006 Репутация: нет Всего: нет |
||||
|
||||
| ksnk |
|
|||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 84 Всего: 386 |
tempman, можно совместить оба способа - хранение в куках и передачу номера DIV'а в адресной строке. Нужно просто проверить возможность установки кукисов (установив, прочитав и сравнив) и если они не работают - использовать второй вариант.
-------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! |
|||
|
||||
| tempman |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 43 Регистрация: 15.12.2006 Репутация: нет Всего: нет |
только что узнал , что мы оказывается воопще не работаем с кукисами ( через них ничего не передаем). есть еще вариант сделать форму с хиден полем , в котором яваскриптом писать id видимого слоя и вместо релоада делать submit() в себя же. вопщем, какой вариант будет лучше? |
|||
|
||||
| ksnk |
|
|||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 84 Всего: 386 |
Кукисы- лучше, так как при скрытой форме експлорер будет тебя о чем-то странном просить, когда ты нажмешь на кнопку релод, какие-то подозрительнве данные куда-то послать
-------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! |
|||
|
||||
| tempman |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 43 Регистрация: 15.12.2006 Репутация: нет Всего: нет |
кукисы не юзаем потому что у тех кому пишем в браузерах кукисы отключены (пишем для внутренних нужд организации) а если метод в этой форме будет гет а не пост? вроде когда все параметры в строке адреса - он эту табличку не выводит, или все же выкидывает? Это сообщение отредактировал(а) tempman - 17.9.2007, 17:20 |
|||
|
||||
| ksnk |
|
|||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 84 Всего: 386 |
tempman, Тогда не понятно, чем этот метод отличается от простой передачи в адресной строке. Результат, практически тот-же - грязная адресная строка, вот разве что телодвижения немного различаются...
-------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! |
|||
|
||||
| tempman |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 43 Регистрация: 15.12.2006 Репутация: нет Всего: нет |
да различее действительно минимально короче ясно , вариантов не очень много для выбора |
|||
|
||||
| Stampede |
|
|||
![]() Гносеолог ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 963 Регистрация: 25.4.2005 Где: Calgary, Alberta, Canada Репутация: 4 Всего: 144 |
Ха-ха, смотрите-ка какую интересную штучку я щас обнаружил.
Вкратце ход мысли был примерно таков: хорошо, после перезагрузки страницы весь старый DOM прекращает свое существование. Но постойте, ведь кроме document есть и более глобальные объекты! Как, например, насчет window? Ну и вот, стал я, значить, пытаться присваивать разные проперти: window.stuff = 'abc' и пр. Смотрю - не присваиваются. Ну-ну, подумал я про себя. Типа, думаете, защитились, запретили присвоение кастомных пропертей? Ничо, на всякую хитрую попу найдется болт с резьбой. Какие там у нас есть еще глобальные объекты? Попробовал функцию alert. Выяснилось, что свойства цепляются нормально, но при перезагрузке теряются. Попробовал еще какие-то объекты, и вдруг - ХОБА! Объект navigator выдал искомое поведение! Скопируйте себе на любую страницу, в любое место вот такой код:
Сделали? А теперь понажимайте рефреш... Видим последовательно увеличивающийся счетчик. Так и подмывает воскликнуть фразу из анекдота: "А ручки-то вот они!" (с) Тем, кто-то еще не до конца осознал всю важность этого открытия: дело, понятно, не в счетчике. Дело в том, что мы таким образом получаем возможность передавать от страницы к странице какую угодно инфу и в каком угодно объеме! Безо всяких кукисов! Да ведь это открывает простор для таких новых трюков, что аж дух захватывает! Но не спешите радоваться, господа. Как говорил Лис в Маленьком Принце, "нет в мире совершенства". Во-первых, как выяснилось в ходе кратких экспериментов, это не работает кросс-сайтно. При переходе на другой домен присвоенные кастомные значения дружно слетают. То есть шпионить уже не получится. Но нам это и ни к чему: карма целее будет. А вот теперь самый главный облом: это работает только в Фаерфаксе. Ни в Опере, ни в Осле подобного эффекта добиться не удалось. И тем не менее... Кто сказал, что свет сошелся клином на объекте navigator? Есть ведь немало и других, не менее глобальных объектов, а у них - встроенные свойства, которые, возможно, не переинициализируются со сменой страницы. И кто знает, не оставили ли разработчики по недосмотру (или шутки ради) какую-нибудь лазейку для передачи инфы между страницами, а то и между сайтами? И пусть эти объекты-лазейки разнятся от браузера к браузеру - ничего, мы напишем тоненькую обертку, скрывающую детали, и назовем ее просто и скромно: bridge.js! И посвятим ее форуму Винград! Так она и прогремит на весь мир: Vingrad Bridge А что, слабо? Кто желает поучаствовать - прошу записываться -------------------- "If you want something done right, do it yourself" По секрету: выучить английский - реально! |
|||
|
||||
| dsCode |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 565 Регистрация: 8.9.2007 Где: Saint-Petersburg Репутация: 19 Всего: 26 |
Stampede, хм... Интересная находка. Причем, проперть сохраняется в любом "сайте" (файле - я открывал два файла в одном табе/окне) - stuff правильно был отображен в обоих. Хех =)) Вот это, действительно, интересно. Кстати, так же, именно в FF элементы формы сохраняют свои значения после F5 (например, был пустой <input type="text" />, вводим значение, обновляем - оно там), правда после Ctrl-F5 это не действует. Но здесь.. И после Ctrl-F5 проперть на месте. Ха-ха =) Можно порыться в js самой мозилы - может там что интересное найдется. Еще - stuff, естественно, исчезает при открытии страницы в новом табе/странице - там свой объект navigator создался.
|
|||
|
||||
![]()
|
| Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | JavaScript: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |