Skip to content

Instantly share code, notes, and snippets.

View BorisChumichev's full-sized avatar
🍕
🍕

Boris Chumichev BorisChumichev

🍕
🍕
View GitHub Profile
@BorisChumichev
BorisChumichev / C@S.md
Last active January 20, 2017 12:07 — forked from Gegam/C@S.md

Общие требования для всех категорий баннеров:

Динамический баннер является частным случаем HTML5-баннера и наследует его технические требования. Кроме требований для HTML5-баннеров необходимо соблюсти следующие условия:

  1. Все кликабельные ссылки должны вставляться только в виде html-тега <a>. Эмуляция кликабельной области с помощью JavaScript запрещается
  2. Элементы баннера, которые предполагают пользовательское взаимодействие (формы, кнопки и пр. интерактивные компоненты), не должны перекрываться кликабельной ссылкой.
  3. В случае возникновения ошибок в баннере необходимо обеспечить показ его упрощенной версии или gif-заглушки.
  4. Из баннера необходимо убрать теги html, head (со всем содержимым, в т.ч. meta), и body. Стили и скрипты, подключаемые в теге head должны быть вынесены за него.
  5. Все стили и скрипты, которые имеют обращение к статическим ресурсам баннера (картинки, шрифты и т.д.), должны быть раз
@BorisChumichev
BorisChumichev / scrolldepth.js
Last active June 29, 2017 09:24 — forked from Gegam/scrolldepth.js
Google analytics scroll depth tracking
;(function() {
var passedMilestones = []
, nonInteractiveThreshold = 20
window.addEventListener('scroll', function(e) {
var scrollTop = window.scrollY
, body = document.body
, html = document.documentElement
, docHeight = Math.max(
@BorisChumichev
BorisChumichev / util.js
Last active August 29, 2015 14:11 — forked from derekr/util.js
/**
* DIY browser shim for node's `util`
*
* @package www
* @author Derek Reynolds <drk@diy.org>
*/
// NOTE: These type checking functions intentionally don't use `instanceof`
// because it is fragile and can be easily faked with `Object.create()`.
function isArray (ar) {