[web-developer] - Репутация: 111
- Webmoney BL: ?
| Если есть вопросы: пишите сюда, новые темы создавать не надо. Потом в первом посте будем проставлять ссылки на полезности и рецепты. Полезные решения:
1. Пользователи онлайн. Эффект десктопной программы. Обновление юзеров онлайн: Код 1 раз в секунду(можно поставить 3 сек, меньше нет смысла ставить, а то эффект пропадет), запрашивает файл с данными с сервера, в котором содержатся строки с количеством юзеров Почему не нужен ajax запрос, который показывает "уменьшение" количества юзеров онлайн: функция php приложенная ниже обновляет файл при каждом запросе любой страницы, а так как у нас 1 раз в секунду происходит опрос этого файла, то нужда в этом отпадает. Почему раз в секунду: как раз для создания эффекта онлайн присутствия. Почему не будет нагрузки: потому что обновление файла в который производится запись количества юзеров онлайн производится раз в 3-5 минут(код php ниже). проверял под нагрузкой в 5000 человек на сайте. js+ajax Код: <script type="text/javascript">
setInterval(function() {
xmlhttp = new XMLHttpRequest();
xmlhttp.open("GET","modules/user_session.txt"+"?"+Math.random(), true);
xmlhttp.onreadystatechange=function(){
if(xmlhttp.readyState==4){
if(xmlhttp.status==200){
number=xmlhttp.responseText.split("|").length-1;
var msgelement = document.getElementById("userOnline");
msgelement.innerHTML=number
}
}
};
xmlhttp.send(null);
}, 1000);
</script> [свернуть] php. обновление файла с юзерами онлайн Код: //выделяем уникальный идентификатор сессии //".sizeof(file($base))."
$id = session_id();
if ($id!=""){
//текущее время
$CurrentTime = time();
//через какое время сессии удаляются
$LastTime = time() - 180;
//файл, в котором храним идентификаторы и время
$base = DOC_ROOT.MODULES."/user_session.txt";
$file = file($base);
$k = 0;
for ($i = 0; $i < sizeof($file); $i++) {
$line = explode("|", $file[$i]);
if ($line[1] > $LastTime) {
$ResFile[$k] = $file[$i];
$k++;
}
}
for ($i = 0; $i<sizeof($ResFile); $i++) {
$line = explode("|", $ResFile[$i]);
if ($line[0]==$id) {
$line[1] = trim($CurrentTime)."\n";
$is_sid_in_file = 1;
}
$line = implode("|", $line); $ResFile[$i] = $line;
}
$fp = fopen($base, "w");
for ($i = 0; $i<sizeof($ResFile); $i++) { fputs($fp, $ResFile[$i]); }
fclose($fp);
if (!$is_sid_in_file) {
$fp = fopen($base, "a-");
$line = $id."|".$CurrentTime."\n";
fputs($fp, $line);
fclose($fp);
}
} [свернуть] [свернуть] 2. Вкладки с эффектами автоскрытияМеню само собой кросбраузерное и универсальное: с него легко можно сделать меню закладками, меню авторизации (как тут: _http://rapstor.ru/ под логотипом) или например всплывающие сообщения можно с него же сваять - это которые синие, зеленые, красные. это притом, что не надо кучу кода переделывать. кусочек кода стер, и получил новое назначение для меню.код Код HTML: <script src="http://code.jquery.com/jquery-latest.js"></script> <center><table style="width: 800px"> <tbody> <tr> <td valign=top> <div id="menu"> <b> <span alt="#sm1" style="cursor: pointer;">Добро пожаловать</span> <span alt="#sm2" style="cursor: pointer;">Новости форума</span> <span alt="#sm3" style="cursor: pointer;">Администрация</span> <span alt="#sm4" style="cursor: pointer;">Баннеры партнеров</span> </b> </div> </td> <td id="MenuTxT" align="center" valign="top"> <div id="submenu" align="center"> <div id="sm1" class="submenutext"><br/><br/>текст добро пожаловать</div> <div id="sm2" class="submenutext"><br /><br />текст новости форума</div> <div id="sm3" class="submenutext"><br /><br />текст Администрация</div> <div id="sm4" class="submenutext"><br /><br />текст баннеры партнеров</div> </div> </td> </tr> </tbody> </table></center> <script type="text/javascript">
$(document).ready(function() {
$("#MenuTxT div.submenutext").hide();
$("#menu span").click(function() {
$("#menu span").removeClass("tabactive");
$(this).addClass("tabactive");
$("#MenuTxT div.submenutext").hide();
var activeDiv = $(this).attr("alt");
$(activeDiv).fadeIn();
StTimer = setTimeout(function() {doid_1_HIDE()}, 2000)
return false; });
});
//setTimeout(function() {$("#menu span:first").click();}, 300); //Это автозапуск первого блока
function doid_1_SHOW(){
activeDiv=$($("#menu span.tabactive").attr("alt"));
activeDiv.stop().fadeIn(1000);
}
function doid_1_HIDE(){
activeDiv=$($("#menu span.tabactive").attr("alt"));
activeDiv.stop().fadeOut(1000);
}
$("#submenu").mouseenter(function(){
clearTimeout(StTimer);
$(this).stop(true,true);
}).mouseleave(function(){
doid_1_HIDE();
});
</script> [свернуть] [свернуть] ---------- Сообщение добавлено 03:21 ---------- Предыдущее 03:10 ---------- И мой первый вопрос: есть 3 кнопки и соответствуюшие им блоки: кнопка - блок кнопка - блок кнопка - блок как сделать чтобы при нажатии на 1 из кнопок открывался 1 блок, а при нажании на другую ,все предыдущие блоки скрывались? Последний раз редактировалось ArhStrAngeR; 14.01.2013 в 03:36. |
|