PDA

Просмотр полной версии : Использование JS от форума vBulletin


LAndrew2
11.04.2005, 22:43
есть такая страничка:

<html>
<script type="text/javascript" src="vbulletin_global.js"></script>
<script type="text/javascript" src="vbulletin_menu.js"></script>

<body>
<table class="tborder" cellpadding="6" cellspacing="1" border="0" width="200" align="center">
<thead>
<tr>
<td class="alt2" colspan="3"><a style="float:right" href="#top" onclick="return toggle_collapse('movie_tech')"><img id="collapseimg_movie_tech" src="../images/buttons/collapse_tcat.gif" alt="" border="0" /></a><b>Информация</b></td>
</tr>
</thead>
<tbody id="collapseobj_movie_tech" style="">
<tr class="alt1">
<td class="alt1" width="100%" align="left" valign="top">
некий текст<br />
</td>
</tr>
</tbody>
</table>
</html>

во второй и третьей строках к ней "цепляются" наборы скриптов от форума vBulletina - цель сделать возможность скрывать/показывать отдельные таблицы на странице (так же, как сделано на этом форуме при нажатии двойной стрелки вверх/вниз (http://www.imho.ws/images/buttons/collapse_tcat.gif)
и это все работает... вопрос в другом... на этом форуме (да и вообще на всех других форумах на vBulletin) данные о свернутой/развернутой таблице сохраняются в cookies и при обновлении страницы показываются в том состоянии, в каком их оставил пользователь
у меня же (на странице, приведенной выше) данная таблица после обновления всегда оказывается видимой...
что надо дописать, чтобы это заработало?

хотел вначале вопрос поместить в тему с форумами, но потом решил, что здесь будет лучше... перенесите, плз, если все-таки не попал

Hubbitus
12.04.2005, 02:26
Как я посмотрел, восстановление состояния при повторной загрузке там и не предсмотренно, странно, зачем тогда сохранять??? Или я плохо смотрел???

Вобщем собственно дописать такую функцию и несложно, добавить например в vbulletin_global.js после save_collapsed (можно и вдругое место, как в отдельный файл, так и прямо на страницу в теге <script>) следующую функцию:
function load_collapsed(){
var collapsed = fetch_cookie("vbulletin_collapse");
if (collapsed != null){
collapsed = collapsed.split("\n");
for (i in collapsed){
toggle_collapse(collapsed[i]);
}
}
}

Ну и соответственно ее вызов при загрузке страницы, например, при использовании функции vBulletin_init (как это на форуме сделано), можно просто добавить строчку load_collapsed(); в функцию vBulletin_init, в самый конец, перед return true;, ну или полюбому вызвать ее отдельно...

LAndrew2
12.04.2005, 21:21
спасибо! работает как надо!

Hubbitus:
Как я посмотрел, восстановление состояния при повторной загрузке там и не предсмотренно, странно, зачем тогда сохранять??? Или я плохо смотрел???
тем не менее, на всех форумах это работает и без этой функции... может эта функция на php есть на каждой странице (считывает куки и при генерации страницы сразу выставляет нужный статус)?

fuldon
12.04.2005, 23:24
Вопрос немного не в тему, но как раз про js на vB.
Скажите, пожалуйста, как заставить браузер кэшировать файлы js?
Наприме, чтобы vbulletin_global.js и другие не постоянно загружались снова, а из кэша. :confused:

Hubbitus
13.04.2005, 09:42
LAndrew2:
наздоровье.

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

miXei
Насколько я понимаю, эти файлы итак поумолчанию должны кешироваться.

fuldon
13.04.2005, 10:57
Hubbitus
Должны, но похоже что не кешируются.
Вот даже на примере imho.ws смотрю.

Или я чего-то не поминаю или как-то настроить может можно на самом сервере или прописать в код js?

LAndrew2
13.04.2005, 19:05
надо посмотреть, что стоит в настройках Апача, по идеи должно быть что-то типа этого (ну, или другое время):

ExpiresActive On
ExpiresDefault "now plus 120 min"


еще можно проверить, что запрет кэширования на странице не прописан, т.е. следующего кода быть не должно:

<META HTTP-EQUIV="pragma" CONTENT="nocache">
<META HTTP-EQUIV="Expires" CONTENT="-1">


и, напоследок проверь настройки форума: vBulletin Options > vBulletin Options > Cookies and HTTP Header Options

fuldon
13.04.2005, 19:22
LAndrew2
Интересно, буду смотреть. :)

Может кто-то уже знает рецепт как сделать для форума vB кеширование js, тогда напишите, пожалуйста.

LAndrew2
13.04.2005, 19:23
обновил пост выше... попробуй начать с последнего :)