Программирование на JS, JQ, Ajax

(Ответов: 130, Просмотров: 17086)
Страница 1 из 14 12311 Последняя
  1. [web-developer] Аватар для cOAPerator
    • Регистрация: 22.02.2011
    • Сообщений: 615
    • Репутация: 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.
    • 3

    Спасибо сказали:

    3s777(28.09.2013), brainix(05.01.2013), Denis Creative(19.01.2014),
  2. Студент
    • Регистрация: 24.10.2012
    • Сообщений: 78
    • Репутация: 7
    сделать сласс у блоков общий, по клику по любой кнопке закрывать все блоки и открывать только this блок
    если надо я код набросаю, но поздно уже просто
    • 0
  3. [web-developer] Аватар для cOAPerator
    • Регистрация: 22.02.2011
    • Сообщений: 615
    • Репутация: 111
    • Webmoney BL: ?
    l3x, набросайте плиз, если не трудно...
    и еще, у меня сейчас блоки, если на них мышь не наведена, автоматом скрываются сами. можно это как то добавить в ваш код?

    Цитата Сообщение от l3x Посмотреть сообщение
    сделать сласс у блоков общий, по клику по любой кнопке закрывать все блоки и открывать только this блок если надо я код набросаю, но поздно уже просто
    а без общего блока никак?
    у меня сейчас вот такая конструкция:

    код

    Код:
    <style>
    .panel_auth {display: none;background-color: #ffffff;}
    .panel_reg {display: none;background-color: #ffffff;}
    .panel_restore {display: none;background-color: #ffffff;}
    </style>
    
    <script type='text/javascript'>
    function panel_auth(){ $('.panel_auth').slideToggle('400');}
    function panel_reg(){ $('.panel_reg').slideToggle('400');}
    function panel_restore(){ $('.panel_restore').slideToggle('400');}
    
    $(document).ready(function(){
    	function doid_1(){
    		$('.panel_auth').slideUp(1000);
    	}
    	$('.panel_auth').mouseleave(function(){
    		mytime1 = setTimeout(doid_1, 1000);
    	});
    	$('.panel_auth').mouseenter(function(){
    		clearTimeout(mytime1);
    	});
    	function doid_2(){
    		$('.panel_reg').slideUp(1000);
    	};
    	$('.panel_reg').mouseleave(function(){
    		mytime2 = setTimeout(doid_2, 1000);
    	});
    	$('.panel_reg').mouseenter(function(){
    		clearTimeout(mytime2);
    	});
    	function doid_3(){
    		$('.panel_restore').slideUp(1000);
    	};
    	$('.panel_restore').mouseleave(function(){
    		mytime3 = setTimeout(doid_3, 1000);
    	});
    	$('.panel_restore').mouseenter(function(){
    		clearTimeout(mytime3);
    	});	
    });
    </script>
    
    <a class='bt_navigate bt_account_menu_width' onClick='panel_auth();' title='вход на сайт'>Авторизация</a>
    <a class='bt_navigate bt_account_menu_width' onClick='panel_reg();' title='регистрация на сайте'>Регистрация</a>
    <a class='bt_navigate bt_account_menu_width' onClick='panel_restore();' title='нажмите сюда, если Вы забыли пароль'>Восстановление</a>
    
    echo "<div class='panel_auth'>
    <form method='post'></form>
    </div>";
    echo "<div class='panel_reg'>
    <form method='post'></form>
    </div>";
    echo "<div class='panel_restore'>
    <form method='post'></form>
    </div>";
    [свернуть]

    код конечно ппц.. но я тока учусь js-у :)

    ПС: у меня 4 утра)
    Последний раз редактировалось cOAPerator; 05.01.2013 в 03:28.
    • 0
  4. Banned
    • Регистрация: 16.04.2011
    • Сообщений: 1,120
    • Записей в дневнике: 1
    • Репутация: 481
    Цитата Сообщение от cOAPerator Посмотреть сообщение
    Итак, это общая тема по программированию на указанных выше языках
    Ну для начала давайте уточним, что из указанных выше языком является только JS.
    • 0
  5. [web-developer] Аватар для cOAPerator
    • Регистрация: 22.02.2011
    • Сообщений: 615
    • Репутация: 111
    • Webmoney BL: ?
    Цитата Сообщение от Tiulkin Посмотреть сообщение
    Ну для начала давайте уточним, что из указанных выше языком является только JS.
    ладно, не придирайтесь, идея понятна же:)
    специально для Вас изменил шапку..
    • 0
  6. Banned
    • Регистрация: 16.04.2011
    • Сообщений: 1,120
    • Записей в дневнике: 1
    • Репутация: 481
    Цитата Сообщение от cOAPerator Посмотреть сообщение
    специально для Вас изменил шапку..
    Не для меня, а для СЕБЯ, т.к. не меня, а Вас все, кто в теме, восприняли бы исключительно как школопрограммиста.
    • 0
  7. [web-developer] Аватар для cOAPerator
    • Регистрация: 22.02.2011
    • Сообщений: 615
    • Репутация: 111
    • Webmoney BL: ?
    Цитата Сообщение от Tiulkin Посмотреть сообщение
    Не для меня, а для СЕБЯ, т.к. не меня, а Вас все, кто в теме, восприняли бы исключительно как школопрограммиста.
    согласен, но отчасти, так как в JS я и есть школопрограммист, в общем только учусь..
    • 0
  8. Студент
    • Регистрация: 24.10.2012
    • Сообщений: 78
    • Репутация: 7
    вот как то так
    Код HTML:
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script> <script type='text/javascript'>
    
    $(document).ready(function(){
    	$("div[rel=hide]").fadeOut();
    	$("div[rel=hide]:first").fadeIn();
    	$(".bt_navigate").click(function (){
    		$("div[rel=hide]").hide();
    		var classes=$(this).attr("id");
    		$("div."+classes).fadeIn();
    	});
    });
    </script> <a class='bt_navigate bt_account_menu_width' id="panel_auth" title='вход на сайт'>Авторизация</a> <a class='bt_navigate bt_account_menu_width' id='panel_reg'  title='регистрация на сайте'>Регистрация</a> <a class='bt_navigate bt_account_menu_width' id='panel_restore' title='нажмите сюда, если Вы забыли пароль'>Восстановление</a> <div class='panel_auth' rel="hide"> <form method='post'>1</form> </div> <div class='panel_reg' rel="hide"> <form method='post'>2</form> </div> <div class='panel_restore' rel="hide"> <form method='post'>3</form> </div>
    А вообще надобы вам селекторы учить

    http://anton.shevchuk.name/javascrip...ers-selectors/
    • 2

    Спасибо сказали:

    brainix(05.01.2013), cOAPerator(05.01.2013),
  9. [web-developer] Аватар для cOAPerator
    • Регистрация: 22.02.2011
    • Сообщений: 615
    • Репутация: 111
    • Webmoney BL: ?
    l3x, эм.. работает.. но вначале такая бешеная анимация всего того что в div блоках... прямо гирлянда:)
    и все блоки изначально скрыты, а у вас 1 открыт...
    попробую теперь на основе примера реализовать как надо...
    будем учиться:)

    ПС: спс за ссылку, почитаю..
    • 0
  10. Студент
    • Регистрация: 24.10.2012
    • Сообщений: 78
    • Репутация: 7
    Да это всё для примера, просто поставь .hide() а не fadeOut() и всё будет по другому
    • 0
Страница 1 из 14 12311 Последняя

Похожие темы

Темы Раздел Ответов Последний пост
PHP/Python программирование
Создание сайтов 7 19.11.2013 19:51
Изучить Web программирование
Web программирование 20 03.06.2012 16:53
Программирование автозапуска USB флешки
Прочее 7 10.03.2012 22:49
Веб программирование на Php, MySQL, Ajax. Программирование на C#
Создание сайтов 3 31.05.2011 01:53
Веб программирование на Php, MySQL, Ajax. Программирование на C#
Реклама партнерских программ 3 31.05.2011 01:53

У кого попросить инвайт?

Вы можете попросить инвайт у любого модератора:

Информеры