Jump to content

Search the Community

Showing results for tags 'javascript'.

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Forums

  • Development
    • HTML Coding
    • JavaScript
    • PHP
    • CMS
    • Database
    • Web Server
    • Web-site Development
    • Internet Marketing, SEO
  • Library
    • Tricks and solutions
    • Books
  • Commercial services
    • Freelance
    • Job
    • Goods and Services
  • Our Forum
    • Flame
    • Contests
    • Feedback and Ideas

Find results in...

Find results that contain...


Date Created

  • Start

    End


Last Updated

  • Start

    End


Filter by number of...

Joined

  • Start

    End


Group


Web site


Telegram


Signal


Viber


Skype


From


Interests

  1. Ребята, без вас никуда! Подскажите, пожалуйста, первый раз адаптирую и стилизую слайдер splide. Сам он работает, но как его стилизовать? В dev tools стилизация тех же стрелок отражается, но когда вношу их в css - не работает. Почему так? Как, например, тогда опустить ниже стрелки? Где устанавливать брейкпоинты и задавать им свойства? На сайте splide такая инфа по адаптиву. https://splidejs.com/guides/options/#breakpoints Вот типа того что-то пробую... https://jsfiddle.net/aqmuyhwd/
  2. Хотели в крестиках ноликах заменить кресты и нули на анимешных тяночек. В голову лезет что то по типу x = url(ссылка), но нормально сформулировать ничего не можем, первый курс колледжа. Заранее спасибо за помощь.
  3. Всем привет! Подскажите, пожалуйста, почему alert выводит 'you are under 18!', затем 'you are more than 18!', а 'you are 18!' пропускает. Имею в виду, если вводить 18, то ок, но если просто нажимать "ок", то как раз 'you are 18!' пропадает. https://jsfiddle.net/4murgp2c/6/ И вот здесь https://jsfiddle.net/4murgp2c/10/ при выборе "ok" alert не должен был предотвратить вывод следующего значения (bad), который по идее должен выводиться только при нажатии на отмену? https://jsfiddle.net/4murgp2c/12/ Здесь какая-то простая ошибка, но моему глазу не видна. Вписываю "you" good не появляется. Заранее спасибо. Такие, возможно, очевидные вещи не видны/не понятны начинающему.
  4. Ссылка на тетрис: http://onlinetetris.noradrzo.beget.tech/ Добрый день, столкнулась с проблемой кнопки “пауза” в игре сделала обработчик на кнопку “пауза” (в самом конце файла js) написала переменную isPaused по умолчанию со значением false (пока игра не начнется) (317 строчка в js) в функции падении фигур move(321 строчка в js), добавила условие, что если не на паузе игра, то фигуры падают но в итоге фигуры вообще не падают, в консоле ошибку не выдает где допущена ошибка?
  5. Подскажите, пожалуйста, как можно исправить не работающий клик, в данном случае, по меню-бургеру. Срабатывает вместо этого hover. Заранее спасибо! <nav class="burger-menu mobile-open"> <button class="burger-menu__btn-mobile"> <i class="fas fa-bars"></i> <span>Menu</span> </button> <ul class="burger-menu__list"> <li class="burger-menu__item"> @@include('./partials/menu/_menu.html', { "item": "contacts" }) </li> <li class="burger-menu__item"> @@include('./partials/menu/_menu.html', { "item": "e-shop" }) </li> <li class="burger-menu__item"> @@include('./partials/menu/_menu.html', { "item": "faq" }) </li> <li class="burger-menu__item"> @@include('./partials/menu/_menu.html', { "item": "home" }) </li> </ul> </nav> var menuEl = document.querySelector('.burger-menu'); var btnEl = document.querySelector('.burger-menu__btn-mobile'); function toggleMenu() { menuEl.classList.toggle('open'); } btnEl.onclick = toggleMenu;
  6. Здравствуйте. Начинающий верстальщик. Ищу первые заказы. Готов верстать что угодно за любую плату (в том числе и бесплатно). Есть 5-7 учебных работ, но этим никого не впечатлить -- очень хочу практического опыта. Использую HTML5/CSS3, JS, JQuery, BEM. Так же разные инструменты, вроде Git, GitHub, SASS/SCSS, Gulp. Если не знаю чего-то необходимого для Вашего проекта\работы -- обязательно разберусь. Если вы разработчик и вам некому спихнуть рутинную работу - я с радостью возьму её на себя; Верстаю из Figma, Photoshop, Illustrator. Могу в адаптивность, отзывчивость, кроссбраузерность, несложную анимацию. телеграмм: туц ; почта: dmitriq.khromikhin@gmail.com Точно на связи с 9:00 до 22:00. Открыт для любых предложений.
  7. Бесплатный VPN - FineVPN.org  |  Telegram бот c бесплатным VPN - @FineVPNbot
    Без ограничений по скорости, трафику и времени. Совершенно бесплатный и безлимитный.

  8. Здравствуйте, пытаюсь сделать небольшой редактор. Сначала нажимается кнопка на html-странице, потом заполняется форма с параметрами графоэлемента (иконы), эти параметры считывает скрипт, передаёт их в другую функцию. Та формирует код HTML с тегом svg и вставляет в блок draw. В этом деле вообще начинающий, ещё в голове путаница с расположением элементов, паддингами и т.п. А проблема, что после исполнения скрипта ничего не происходит, иногда на секунду мелькает что-то похожее, но в целом результата нет. Код HTML: <!DOCTYPE html> <html lang="ru"> <head> <meta charset="utf-8"> <title>Иконы</title> <link rel="stylesheet" href="style.css"> </head> <body> <div class="open-button"> <button onclick="openForm()">Открыть форму</button> </div> <div class="form-popup" id="IconForm"> <form class="form-container"> <h1>Параметры иконы</h1> <label for="bordercolor"><b>Цвет границы</b></label> <select id='select_bc' size='1'> <option value='#000'>Чёрный</option> <option value='#00f'>Синий</option> <option value='#f00'>Красный</option> <option value='#0f0'>Зелёный</option> </select> <p></p> <label for="background"><b>Цвет фигуры</b></label> <select id='select_bg' size='1'> <option value='#fff'>Белый</option> <option value='#bbf'>Синий</option> <option value='#fbb'>Красный</option> <option value='#bfb'>Зелёный</option> </select> <p></p> <label for="fontcolor"><b>Цвет текста</b></label> <select id='select_fc' size='1'> <option value='#000'>Чёрный</option> <option value='#00f'>Синий</option> <option value='#f00'>Красный</option> <option value='#0f0'>Зелёный</option> </select> <p></p> <label for="text"><b>Содержание фигуры</b></label> <textarea id="text_in" cols="20" rows="3"></textarea> <button type="submit" class="btn" onclick="return acceptArgs()">Принять</button> <button type="submit" class="btn cancel" onclick="return closeForm()">Закрыть</button> </form> </div> <div id="Draw"></div> <script type="text/javascript" src="script.js"></script> </body> </html> CSS: {box-sizing: border-box;} /* Кнопка, используемая для открытия формы */ .open-button { background-color: #555; color: white; padding: 16px 20px; border: none; cursor: pointer; opacity: 0.8; position: fixed; width: 280px; } /* Всплывающая форма-скрыта по умолчанию */ .form-popup { display: none; position: fixed; border: 3px solid #f1f1f1; z-index: 9; } /* Добавить стили для контейнера формы */ .form-container { max-width: 300px; padding: 10px; background-color: white; } /* Поля ввода полной ширины */ .form-container input[type=text], .form-container input[type=password] { width: 100%; padding: 15px; margin: 5px 0 22px 0; border: none; background: #f1f1f1; } /* Когда входы получают фокус, сделайте что-нибудь */ .form-container input[type=text]:focus, .form-container input[type=password]:focus { background-color: #ddd; outline: none; } /* Стиль для кнопок */ .form-container .btn { background-color: green; color: white; padding: 16px 20px; border: none; cursor: pointer; width: 100%; margin-bottom:10px; opacity: 0.85; } /* Красный цвет фона для кнопки "Отмена" */ .form-container .cancel { background-color: red; } /* Добавить некоторые эффекты наведения на кнопки */ .form-container .btn:hover, .open-button:hover { opacity: 1; } JS: function openForm() { document.getElementById("IconForm").style.display = "block"; } function closeForm() { document.getElementById("IconForm").style.display = "none"; return false; } function drawIcon(bc, bg, fc, text) { var svg = '<svg> <rect rx="32.8" ry="18.3" x="500" y="500" height="55" width="99" '; svg += 'fill="'+ bg + '" stroke="'+ bc +'" stroke-width="2px" />'; svg += '<text x="50%" y="50%" dominant-baseline="middle" text-anchor="middle" fill='+fc+";'>"; svg += text + "</text></svg>"; alert(svg); document.getElementById('Dragon').innerHTML += svg; return true; } function acceptArgs() { var bc = document.getElementById("select_bc"); bc = bc.options[bc.selectedIndex].value; var bg = document.getElementById("select_bg"); bg = bg.options[bg.selectedIndex].value; var fc = document.getElementById("select_fc"); fc = fc.options[fc.selectedIndex].value; var text = document.getElementById("text_in").value; closeForm(); drawIcon(bc, bg, fc, text); }
  9. Всем привет. При клике (добавляю active к label) делает активными все элементы, а не текущий? Как быть? $(document).on('change', '.compare-control', function(){ var id = $(this).val(); var url = '/?action=DELETE_FROM_COMPARE_LIST&ajax_action=Y&id='+id; if ($(this).prop('checked')) { url = '/?action=ADD_TO_COMPARE_LIST&ajax_action=Y&id='+id; } $.get(url, function() { BX.onCustomEvent('OnCompareChange'); }); // здесь беда!!!при клике на элемент, делает элементы все активными, а не текущий. if($('.catalog-content-main-item-top-fav').hasClass('active')) { $('.catalog-content-main-item-top-fav').removeClass('active'); }else{ $('.catalog-content-main-item-top-fav').addClass("active"); } }); BX.addCustomEvent('onCatalogDeleteCompare', function(id) { $('.compare-control[value="'+id+'"]').prop('checked', false); }); Код html: <label class="catalog-content-main-item-top-fav <?= array_key_exists($arItem['ID'], $_SESSION["CATALOG_COMPARE_LIST"][5]['ITEMS'])?'active':''?>" > <input onclick="function f(e) { e.preventDefault();}" style="display: none" type="checkbox" value="<?=$arItem['ID'];?>" class="compare-control" <? if(isset($_SESSION['CATALOG_COMPARE_LIST']['5']['ITEMS'][$arItem['ID']])):?> checked="checked" <? endif;?>> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none"> <path d="M12.2536 19.2043L12 19.055L11.7464 19.2043L5.28009 23.0103L6.73156 15.3278L6.78144 15.0638L6.58881 14.8765L1.09502 9.53481L8.50172 8.61114L8.7836 8.57598L8.89772 8.31586L12 1.24455L15.1023 8.31586L15.2164 8.57598L15.4983 8.61114L22.905 9.53481L17.4112 14.8765L17.2186 15.0638L17.2684 15.3278L18.7199 23.0103L12.2536 19.2043Z" fill="white" stroke="#E09B3D"/> </svg> </label> а этот код срабатывает только после перезагрузки страницы: <?= array_key_exists($arItem['ID'], $_SESSION["CATALOG_COMPARE_LIST"][5]['ITEMS'])?'active':''?>
  10. Пример сайта по разработке reactiq точка net Цена на разработку 70 000 рублей. Без дизайна и верстки, от вас нам нужен функционал на фреймворке Lavarel Нужно постараться уложиться в 20 дней по срокам. Работа по Сделке без риска. B и больше ни как. Основные моменты работы сайта: авторизация сайта через стим считывания апи через официальный сайт pubg Трейдов скинов и все остальное не будет! подключить систему оплат создание личного кабинета для пользователя. Есть полное ТЗ проекта, которое мы готовы упрощать на первом этапе.Готовы достойно оплачивать ваш труд! Пишите в телеграм @evgensalyah
  11. Ищем талантливого программиста в игровой проектДля разработки игрового проекта требуются талантливые программисты.Отличное знание: PHP, JavaScript, PythonПреимуществом будет если когда-то работали с платформой steam и с голосовым мессенджером Discord.Вкратце о проекте: Будет разрабатываться площадка для проведения турниров по играм pubg, dota, cs go.Ищем программиста с руками. Не важно какой вы ориентации, вероисповедания и т.д. Нам от вас важен результат!Готовы достойно оплачивать ваш труд! Пишите в телеграм @evgensalyah
  12. https://youtu.be/7pr0x3elUzQ Буду признательна если поможете При наведении на блок он поворачивается под углом, при клике на блок - открывается сам блок на весь экран (плавно), при клике на лого - сворачивается открывшийся блок
  13. Добрый день! Помогите разобраться с работой метода closest(). В приведенном примере https://jsfiddle.net/ymnjo3tc/ , я делаю все "по инструкции": беру дочерний элемент и проверяю наличие у него родительского при помощи данного метода. Но в ответ всегда ловлю один и тот-же Exception. Какие бы я не пробовал проверять элементы. В чем может быть проблема? Где я допускаю ошибку? Да и вообще, применим ли этот метод на практике? И в каких ситуациях?
  14. Разрабатываю React/React Native приложения. С образцами моих некоммерческих работ вы можете ознакомиться по адресу: https://github.com/Roman-Onishchenko?tab=repositories Готов рассмотреть ваши предложения о разработке React/React Native приложений различной тематики и объема работ с частичной занятостью (до 30 рабочих часов в неделю). Мои контакты: skype - romanonishencko email - roman951t@gmail.com
  15. В общем, написал вот такой код, где красный блок див можно схватить и перетаскивать, но не знаю как наложить ограничение на то, чтобы этот красный блок див не заходил за рамки второго -- серого блока с размером 500х500 пикселей. Как это можно сделать? Хотелось бы увидеть готовый код, чтобы можно было в нём покопаться и разобраться самому. Заранее спасибо. <html> <head><title>Moving</title></head> <body onload= "init()"> <h1 style="margin-left: 650px; color: red;">Адаптировано для Chrome</h1> <div id='serkv' style="position:absolute;width:500;height:500;background-color:grey;left:10;top:10"> <DIV id='kv' style="position:absolute;left:10;top:10;width:50;height:50;background-color:red"> </div> </div> </body> <SCRIPT> kv.onmousedown = function(event) { kv.style.position = 'absolute'; kv.style.zIndex = 1000; document.body.appendChild(kv); moveAt(event.pageX, event.pageY); function moveAt(pageX, pageY) { kv.style.left = pageX - kv.offsetWidth / 2 + 'px'; kv.style.top = pageY - kv.offsetHeight / 2 + 'px'; } function onMouseMove(event) { moveAt(event.pageX, event.pageY); } document.addEventListener('mousemove', onMouseMove); kv.onmouseup = function() { document.removeEventListener('mousemove', onMouseMove); kv.onmouseup = null; }; }; kv.ondragstart = function() { return false; }; </SCRIPT> </html>
  16. Здравствуйте.Возникла проблема со следующим заданием:вывести всплывающее окно, запрашивающее имя пользователя, затем вывести сегодняшнюю дату на экран(её можно увидеть после всего цикла окон),потом задать вопрос касательно обучения в группе(если да-цикл продолжается, нет-вывести окно с отказом),далее ещё одно вводное окно,а потом через всплывающие окна запросить у пользователся значения a,b,c для решения квадратного уравнения.Суть проблемы:как только после if-а, отвечающего за запрос о принадлежности к группе,браузер перестаёт отображать остальные окна и простую инфу о дате,которая просто выводится на экран. Подскажите,пожалуйста,как можно пофиксить эту проблему.Всё никак не могу найти причину этого.Мой одногруппник написал похожий код и у него всё работает,но при сравнении я не увидел каких-то кардинальных различий.Свой и его код прикрепил ниже.Буду весьма признателен за вашу помощь,у меня уже просто нет вариантов,что не так с моим кодом:/ Мой код: <html> <head> <title>вывод различной инфы через всплывающие окна</title> </head> <body> <p id="nameUser"></p> <script> var nameUser=prompt("Введите Ваше имя пользователя."); if (nameUser) { document.getElementById("nameUser").innerHTML = nameUser +",Здравствуйте, добро пожаловать на сайт!"; } else { document.getElementById("nameUser").innerHTML = "Гость, добро пожаловать на сайт!"; } Data = new Date(); Year = Data.getFullYear(); Month = Data.getMonth(); Day = Data.getDate(); switch (Month) { case 0: Month="января"; break; case 1: Month="февраля"; break; case 2: Month="марта"; break; case 3: Month="апреля"; break; case 4: Month="мае"; break; case 5: Month="июня"; break; case 6: Month="июля"; break; case 7: Month="августа"; break; case 8: Month="сентября"; break; case 9: Month="октября"; break; case 10: Month="ноября"; break; case 11: Month="декабря"; break; } document.write("Сегодня "+Day+" "+Month+" "+Year+" года."); if(confirm("Вы учитесь в группе ЭИ-38?")) { alert("Добро пожаловать на страницу, посвященную лабораторной работе по изучению основ JavaScript!") alert("Решите квадратное уравнение: ax^2 + bx + с = 0, где а не равно 0,используя введённые числа для a,b,c") a=prompt("Введите значение а") b=prompt("Введите значение b") c=prompt("Введите значение c") var d = b * b - 4 * a * c; if(d > 0) { x1=(( - b)+(Math.sqrt(d)))/(2 * a) x2=(( - b)-(Math.sqrt(d)))/(2 * a) alert("Корни уравнений:x1="+ x1 +"x2="+ x2 +) document.write("Корни уравнений:x1="+ x1 +"x2="+ x2 +); } if(d == 0) { x1 = (- b) /( 2 * a) alert("Корень уравнения:x1= ",+ x1) document.write("Корень уравнения:x1="+ x1 +); } if(d < 0) { alert("с введёнными значениями квадратное уравнение не имеет корней") } } else { alert("Извините, вход только для своих.") } </script> </body> </html> ниже оригиналы моего кода и одногруппника. index try2.htm variant znakomogo.htm
  17. Добрый день, форумчане! Ищем ведущего фронтенедера в компанию DataLight! Наша команда создает уникальную платформу для анализу данных по крипто-активам, ориентированную на профессиональных инвесторов. Мы делаем доступными и понятными инструменты, направленные на оптимизацию и автоматизацию инвестиционных стратегий. Горизонтальная структура, отсутствие строгих регламентов, дресс-кода, инструкций и бюрократии. О Вакансии: Быстрорастущий проект с глобальными амбициями ищет опытного Front-end разработчика. Наша команда создает уникальную платформу для анализу данных по крипто-активам, ориентированную на профессиональных инвесторов. Мы делаем доступными и понятными инструменты, направленные на оптимизацию и автоматизацию инвестиционных стратегий. Задачи: - Искать оптимальные технологические и архитектурные решения, развивать функционал платформы; - Создание API платформы, использующее WebSocket для быстрого взаимодействия между сервером и клиентом; - Front-end разработка на JavaScript (React, CSS Modules), работой над инфраструктурой. Требования: - Опыт front-end разработки с использованием технологии WebSocket; - Профессиональное владение JavaScript, HTML и CSS; - Опыт использования React; - Знание технологий TypeScript, Redux; - Знание систем сборки Webpack; - Владение системой контроля версий Git; - Знание принципов работы HTTP. Дополнительным преимуществом будет являться: - Знакомство с методологией BEM; - Опыт работы с SCSS; - Опыт работы с высоконагруженными проектами. Условия: - ЗП от 150 000 до 180 000 руб. на руки - Полная занятость, гибкий график - Работа в одной из самых востребованных индустрий; - Возможность неограниченного профессионального и карьерного роста; - Работа в сильной, мотивированной команде над сложными и интересными задачами; - Конкурентоспособная заработная плата, бонусы; - Уютный офис в центре Москвы, удобный офис в 5 минутах ходьбы от метро Охотный ряд. Свои резюме просьба присылать на почту: hr.oleg.s@yandex.ru, а также примеры 2-3 выполненных работ с кратким описанием каждого из проектов
  18. Здравствуйте, Я начинающий специалист в верстке. Знаю HTML и CSS. Изучаю фреймворки и JS. Очень хочу реализоваться в сфере Frontend - разработки. Готов пройти стажировку ( рассматриваю и не оплачиваемый вариант ), с дальнейшим трудоустройством. Буду рад интересным предложениям! мой почтовый ящик: mrcojuhari@yandex.ru
  19. Здравствуйте, помогите мне со вставкой переменной в herf. Вставляю ссылку на страницу пишет: Файл не найден Возможно, он был перемещён или удалён. В интернете очень мало информации по этому вопросу. Заранее спасибо! index7.html
  20. Доброго времени суток, столкнулся с проблемой, скрипт не работает в Firefox но прекрасно работает в Chrome. Суть скрипта, каждые 10 секунд "переключать" рандомную фотку вот скрипт: <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"> </script> <script> $(document).ready(function() { $('#slider4').children('div').each(function(n_div,div) { $(div).children('img').each(function(n_img,img) { if(n_img) $(img).css({'opacity':'0.0'}); else { $(div).attr({'value':(n_img+1)}); $(img).css({'opacity':'1.0'}); } }); }); window.setInterval(function() { $('#slider4').children('div').each(function(n,element) { var img = $(element).attr('value');; var rnd = Math.floor(Math.random()*(5-1+1))+1; if(img != rnd) { $(element).attr({'value':rnd}); $(element).children('#img' + (n + 1) + img).animate( {'opacity':'0.0'}); $(element).children('#img' + (n + 1) + rnd).animate( {'opacity':'1.0'}); } }); },10000); }); </script> P.S Скрипт не мой, взял с этого форума, вырезал лишнее. Не кидайтесь сильно камнями)
  21. Здравствуйте. Я занимаюсь версткой сайтов: лендингов, интернет-магазинов, флаеров и тп. Ищу работу, для набора опыта и заработка первых денег на данной позиции. Мое портфолио: https://alex2033.github.io/sites/BlackDone/index.html https://alex2033.github.io/sites/Sandeo/index.html https://alex2033.github.io/sites/Barbershop/index.html https://alex2033.github.io/sites/Skylith/index.html https://alex2033.github.io/sites/Unicorn/index.html https://alex2033.github.io/sites/Bouncy/index.html Остальные работы вы можете посмотреть здесь: https://alex2033.github.io/ Навыки: - Знание HTML5, CSS3 - Опыт адаптивной, семантической, кроссбраузерной верстки - CSS3 анимация - знания Javascript на уровне jQuery - Использование препроцессоров LESS/SASS/Stylus + Pug - Опыт работы в Adobe Photoshop, Illustrator, Zeplin, Avocode - Именование классов по методологии БЭМ-нейминг - Gulp, npm, bower - Умение работать с сетками (bootstrap 3+, foundation, flexboxgrid) - Умение работать с фреймворками bootstrap 3, 4, foundation - Знание английского на уровне чтения документации - Навык работы с векторной графикой SVG - Умение использовать flexbox, css-grid там где это необходимо Форма связи: Email - XoxlofAlexandr@yandex.ru - преимущественно Skype - Xronaliz Также можете написать на этом сайте Благодарю за внимание и хорошего дня:)
  22. Всем добрый день! Занимаюсь 2 месяца fron end программированием, до этого писал на PHP, сейчас за несколько дней сделал тестовое задание - toDo лист с авторизацией(разные аккаунты - разные задачи), удалением, добавлением, редактированием задач, а также с подробной страницей задачи. Все это сделал на react/redux/. Скажите, на какую зп можно рассчитывать? (регион). Спасибо!
  23. Имею в наличие багаж знаний верстки а точнее в Html5 Css3 и Javascript и для успешного дебюта в карьере необходим опыт, поэтому я готов верстать Landing cтраницы за дешево либо же за хороший отзыв на сайте Freelancer. Для связи со мной пишите в телеграмм или же в скайп Telegram - @glacius74 Skype - snowman3533
  24. Добрый день! Помогите устранить пробел в теории по функциям. Я не могу понять в чем разница в выполнении FE типа var example1 = function(){ return 2+2;}; и IIFE типа var example2 = (function(){return 2+2;}()); . Я проверял этапы выполнения - одинаковы... В чем разница???
  25. здравствуйте, надеюсь выбрал тему верно, так вот ... на хостинге установили node открыли порт 3000 порт прослушивается, при обращении lptf.it:3000 или http://185.53.160.215:3000/ выводится сообщение Hello Node.js Server!. Казалось бы все хорошо! но! я хочу дальше создание чата, и в корне сайта создаю файлик (сервер) с кодом (пример с интернета, я новичОк): var express = require('express'); var app = express(); app.set('port', process.env.PORT || 3000); app.set('host', process.env.HOST || 'localhost'); var logger = require('log4js').getLogger(); var server = require('http').Server(app); var io = require('socket.io')(server); var port = 3000; app.use(express.static('/home/urlyogyj/public_html/views/chat.php')); app.get('/chat.php', function(req,res){ res.sendFile('/home/urlyogyj/public_html/views/chat.php'); }); app.use('/fonts', express.static('/home/urlyogyj/node_modules/uikit/src/fonts/')); app.get('/socket.io.js', function(req,res){ res.sendFile('/home/urlyogyj/node_modules/socket.io-client/dist/socket.io.js'); }); app.get('/jquery.js', function(req,res){ res.sendFile('/home/urlyogyj/node_modules/jquery/dist/jquery.min.js'); }); app.get('/uikit.js', function(req,res){ res.sendFile('/home/urlyogyj/node_modules/uikit/dist/js/uikit.min.js'); }); app.get('/uikit.css', function(req,res){ res.sendFile('/home/urlyogyj/node_modules/uikit/dist/css/uikit.almost-flat.min.css'); }); app.get('/animate.css', function(req,res){ res.sendFile('/home/urlyogyj/node_modules/animate.css/animate.min.css'); }); function usersCountToLog(){ logger.info('User count: '+io.engine.clientsCount); } io.on('connection', function(socket){ function setName(name){ if(name != undefined && name != ''){ socket.session = {}; socket.session.userName = name; socket.session.address = socket.handshake.address; socket.session.id = socket.id; socket.broadcast.emit('newUser', socket.session); socket.emit('userName', socket.session); socket.emit('userList', io.length); logger.info('User '+socket.session.userName+' join from IP: '+socket.session.address); usersCountToLog(); var clients = io.sockets.connected; var clientsList = {} for(var key in clients){ if(clients[key].session) clientsList[key] = clients[key].session; } socket.emit('clientsList', clientsList); console.log(clientsList); } else socket.emit('setName'); } setName(null); socket.on('setName', function(name){ if(name.length > 0) setName(name); else socket.emit('setName'); }); socket.on('message', function(msg){ if(socket.session){ if(socket.session.userName === null || socket.session.userName == '' || socket.session.userName == undefined){ socket.emit('setName'); }else{ logger.trace('———--'); logger.trace('User: ' + socket.session.userName + ' | Message: ' + msg); logger.trace('====> Sending message to other chaters...'); socket.broadcast.emit('messageFromClients', msg, socket.session.userName); socket.emit('messageToClients', msg, socket.session.userName); } } }); socket.on('disconnect', function(){ if(socket.session){ io.sockets.emit('userDisconnected', socket.session); logger.info('User '+socket.session.userName+' left chat'); usersCountToLog(); } }); }); console.log('server started, tipa...'); как видно по коду прописал адреса к файлам, они верные, в консоле перезапускаю сервер командой node /home/urlyogyj/public_html/app.js screen после этого обновляю адрес lptf.it:3000 и все равно без перемен, выводит Hello Node.js Server! я не понимаю почему, и где и как можно отслеживать ошибки. чего вообще хочу добиться: до авторизации какого-либо пользователя чат не нужен, как только пользователь авторизовывается на сайте, открывается сокет и на сайте для всех остальных пользователей и гостей видна надпись что тот авторизованный пользователь в сети, и напротив его логина появляется кнопка создать чат, но только для авторизованых пользователей, при нажатии на нее открывается окошко чата, как на сайте вконтакте или фейсбуке, у получателя сообщения есть блок со списком все кто прислал ему сообщение, получатель нажимает на автора и пользователи начинают общение, каждый диалог с новым пользователь должен запускать свое окошко чата. причем этот чат существует на всех страницах сайта. после выхода пользователя через кнопку выход или закрытии вкладки сокет закрывается, а все сообщения записываются в базу данных!
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy