Destio

JavaScript

Google Maps API, функция проверки загрузки

У Google Maps API почему-то нет довольно типичной функции, которая выполняется после загрузки (всякие ready(), onload() и т.п.). Поэтому приходится делать ее самому из предоставленного колбэка. <script async defer src=»https://maps.googleapis.com/maps/api/js?key=APIKEY&callback=onGmapLoad»></script> function onGmapLoad () { gMapLoaded = true; } Ну и если нам надо выполнять код когда карты полностью прогрузились, то просто if (gMapLoaded === true) {} […]

Читать дальше

Проверка типов и значений в Javascript

Объявлена ли переменная foo if (typeof foo === «undefined») { … } Является ли foo массивом if (Array.isArray(foo) === true) { … }

Читать дальше

Убрать предложение о регистрации на Quora.com

На Quora.com иногда бывают занятные посты, но их агрессивная политика не позволяет читать без регистрации, закрывая ответы предложением о регистрации. Окошко с предложением мягче политики, поэтому его можно скрыть с помощью небольшого букмарклета: javascript: (function() { document.body.classList.remove(«signup_wall_prevent_scroll»); document.getElementsByClassName(«modal_signup_background»)[0].style.display = «none»; document.getElementsByClassName(«modal_signup_dialog»)[0].style.display = «none»; document.getElementsByClassName(«vertical_alignment_wrapper»)[0].style.display = «none»; }())

Читать дальше

Самоподстраивающийся таймер в JavaScript

Небольшой таймер на смеси AngularJS и JavaScript, требует инжекта $timeout(), который есть setTimeout() + $apply() . Ежесекундный таймер бы вполне сработал и с $interval(), но на будущее пригодится и подстраивающийся. Заодно есть и стоп-функция, а то просто так рекурсивный setTimeout() не остановить. $scope.revenue = { time: 0, increment: function() { $scope.revenue.time += 1; if (timerGo […]

Читать дальше

,

Использование CDN вместе с резервной локальной копией

Обычно библиотеки(jQuery, reactJS) и фреймворки(AngularJS, Bootstrap) предлагают загружать себя через CDN, что имеет множество плюсов по сравнению с корявеньким локальным сервером. Это быстро и эффективно, однако теперь работа сайта будет зависеть сразу от 2 удаленных ресурсов (минимум). Поэтому хорошо бы продумать пути отхода, если CDN умер или недоступен. Общая схема работы: загрузить с CDN, проверить […]

Читать дальше

, , , ,

Hello, World! в ReactJS

ReactJS довольно неудобен в начале ознакомления, но вот простой Hello World!, который поможет убедиться что все нормально инклюдится и работает. <script src=»https://unpkg.com/react@15.3.2/dist/react.js»></script> <script src=»https://unpkg.com/react-dom@15.3.2/dist/react-dom.js»></script> <hiWorld></hiWorld> <script> var hiElement = document.querySelector(«hiWorld»); ReactDOM.render(React.createElement(«h1», null, «Hello, World!»), hiElement); </script> Если я заменю < на &lt;, React отхеловордится прямо тут, на странице.

Читать дальше

,

AngularJS фильтр для перевода секунд во время

Встроенные фильтры для этого не подходят, и dateFilter он немного для другого. Нехитрый фильтр, получает секунды в Number и выдает время в формате 0 h 0 min 0 s. Наверное более фундаментальным и гибким решением была бы конвертация секунд в полноценный объект Date и вывод его с помощью dateFilter, но это потом. .filter(«secondsToTime», function() { […]

Читать дальше

, ,

Интерполяция строк в JavaScript

Раньше в JavaScript не было таких плюшек, но в ECMAScript 6 (лето 2015) завезли. Теперь для раскрытия переменных в строке, надо сначала засунуть строку в обратные кавычки и сами переменные или выражения в фигурные скобки ${bar}. Больше пхп богу пхп. var foo = 12; var bar = 84; console.log(`foo = ${foo}, bar = ${bar}, foo […]

Читать дальше

Скачать текстовый файл в JavaScript

Небольшая функция для автоматической загрузки текстового файла. Аргументы — содержимое файла и расширение. Кодировка будет UTF-8. function downloadTextFile(fileContent, fileName) { var fileLink = window.document.createElement(«a»); fileLink.href = window.URL.createObjectURL(new Blob([fileContent], {type: ‘text/plain’})); fileLink.download = fileName; document.body.appendChild(fileLink); fileLink.click(); document.body.removeChild(fileLink); }

Читать дальше

Задание переменной как объект или как литерал

Я часто читаю что задание переменной как foo = new String(«blabla») плохо и медленнее чем просто foo = «blabla», однако почему — не совсем очевидно. Это, вроде как, объясняется тем что в первом случае получается объект строка, а во втором — строковый примитив, который преобразуется в объект, если надо. Отсюда уже не понятно, как оно […]

Читать дальше

Записки постарше