Рубрика: WEB
Здесь собраны статьи, наработки, исправление ошибок и решение проблем связанных с разработкой для WEB
Плагин для ввода даты и времени в input
Вот один из вариантов:
Плагин можно скачать здесь
Локализация (русский язык, и понедельник -первый день):
1 2 3 4 5 |
jQuery.datetimepicker.setLocale('ru'); $("#sbss_dtstart").datetimepicker({ format:'Y-m-d H:i:00', dayOfWeekStart: 1, }); |
wss WebSocket через proxy apache
Возникла необходимость поднять соединение wss Websocket из браузера на странице с протоколом https. Причем сертификат для страницы — самоподписанный. Соответственно при первом заходе на такую страницу, браузер сообщает что страница не небезопасна и т.п. Когда пользователь соглашается, что согласен посетить данную страницу, открывается сайт, и скрипт на сайте пытается установить wss соединение с сервером по тому-же адресу, что и сам сайт. И соответственно не получается, т.к. пользователь страницы не одобрил это не безопасное соединение. Если он откроет в браузере ссылку вида https://websocketserver:8100, и согласится, то соединение будет установлено корректно. Но заставлять пользователя перед работой на сайте открывать еще одну страницу — бред. Можно поступить по другому: не заметно перенаправить соединение вида https://websocketserver/wss/ на ws://websocketserver:8100 . И вуаля — соединение теперь устанавливается без лишних вопросов.
Для того чтобы это всё работало, в настройках апача нужно включить модули: proxy_module и proxy_wstunnel_module. И в настройках сайта соответственно прописать чтото типа:
ProxyPass /chat/ ws://noc.dcedwedwe.ru:8100/
ProxyPassReverse /chat/ ws://noc.dcedwedwe.ru:8100/
Динамическая загрузка скриптов на JavaScript
В том случае если необходимо динамически подгрузить на страницу какие-то скрипты, возможно использовать например прообраз следующего кода:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
window.onload=function(){ if (typeof jQuery == 'undefined') { dhtmlLoadScript("https://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"); }; //проверяем, а подгрузился ли juery? var timerId = setInterval(function() { if (typeof jQuery == 'undefined'){ console.log("--еще не догрузился jquery..ждем.."); } else { dhtmlLoadScript("http://ajax.googleapis.com/ajax/libs/jqueryui/1.11.4/jquery-ui.min.js"); console.log("--вроде jquery загрузился, гружу jquery-ui.."); clearInterval(timerId); var timerId2 = setInterval(function() { if (typeof $.ui == 'undefined'){ console.log("--еще не догрузился jquery-ui..ждем.."); } else { clearInterval(timerId2); console.log("--вроде jquery-ui загрузился, инициализирую чат.."); mainchat(); }; },1000); }; }, 1000); }; function dhtmlLoadScript(url){ var e = document.createElement("script"); e.src = url; e.type="text/javascript"; document.getElementsByTagName("head")[0].appendChild(e); } |
в данном случае в целях кроссбраузерности, используется проверка по таймеру, загрузился код или нет, ибо в файрефоксе идет последовательная загрузка кода, а в хроме паралельная. В связи с чем, может возникать ситуация дальнейшего выполнения кода, при еще не подгруженных скриптах.
Как вставить код на JavaScript между тегами
Для того чтобы показать на странице отформатированный javascript код, нужно воспользоваться следующей уловкой: заменить знаки < и > соотвествующими кодами: < и > . В оезультате вставка должна получиться примерно такой:
1 2 3 4 5 6 7 8 9 10 11 12 |
<pre> <script> (function(){ var hcc = document.createElement("script"); hcc.type ="text/javascript"; hcc.async =true; hcc.src ="http://сайт_чат_сервера/chat_client/chat_client.js"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(hcc, s.nextSibling); })(); </script> </pre> |