Кроссбраузерные решения в Рекламной сети Яндекса Юрий Беляков.

Презентация:



Advertisements
Похожие презентации
Разгони свой сайт Лекция 7: «Ненавязчивый» JavaScript Мациевский Николай 1 / 22 webo.in.
Advertisements

Объектная модель документа. Динамический HTML Делает страницу интерактивной Вместо дополнительных запросов к серверу на действия пользователя реагирует.
Тонкий CSS для Internet Explorer Павел Корнилов. Браузеры.
Ненавязчивый Unobtrusive JavaScript Сергеев Алексей «Открытые Веб-Технологии»
CERN – European Organization for Nuclear Research IT Department – e – Business Section Прошлое, настоящее и будущее JavaScript Дж. Дрансфилд, Р. Титов.
Разгони свой сайт Лекция 8: Быстрый JavaScript Мациевский Николай 1 / 24 webo.in.
1 1 Сайт 2009, Москва, 26 июня 2009 года Руководитель и ведущий разработчик сервиса Яндекс.Метрика Разуваев Михаил Анализ сайта. Возможности интернет статистики.
Объектная модель документа. Динамический HTML Делает страницу интерактивной Вместо дополнительных запросов к серверу на действия пользователя реагирует.
CSS Cascading Style Sheet. CSS это правила как должен выглядеть HTML. Существуют три типа правил CSS 1. HTML селектор - текстовая часть HTML тэга. P селектор.
1 Предложение на российском рынке контекстной рекламы Евгений Ломизе Поисковая оптимизация и продвижение сайтов в Интернете Москва, ноября 2007.
Таблицы и фреймы По материалам курса University of Washington.
1 Учебный курс Введение в JavaScript и CGI Лекция 1 Введение в JavaScript кандидат технических наук Павел Брониславович Храмцов
Работа с DOM-моделью и пользовательский интерфейс По материалам курса University of Washington
1 Контекстная реклама 2009: переселение народов Евгений Ломизе Поисковая оптимизация и продвижение сайтов в Интернете Москва, ноября 2009.
1 Мобильные API: как снизить стоимость контакта с пользователем Минск 2011.
1 Основы работы в интерфейсе Яндекс.Директ Практическое пособие Екатеринбург, 2011.
Язык JavaScript Скриптовый язык для выполнения на html-страницах.
1 Яндекс.Директ 2007: новые инструменты - новые возможности Евгений Ломизе Конференция "Управление аудиторией и реклама в Интернете-2008" Москва,
CSSCSS (англ. Cascading Style Sheets каскадные таблицы стилей) язык описания внешнего вида документа, написанного с использованием языка разметки.англ.
Выполнил: Петров Дмитрий Вячеславович Руководитель: Старцева Татьяна Александровна.
Транксрипт:

Кроссбраузерные решения в Рекламной сети Яндекса Юрий Беляков

Главная страница РСЯ

Требования к рекламному блоку Код должен работать независимо от: –посещаемости сайта; –браузера посетителя; –верстки и дизайна сайта; –«кривизны рук» веб-мастера; –попыток умышленно (или случайно) повлиять на работу кода или внешний вид рекламного блока.

Защита от конфликтов Для того, чтобы снизить вероятность конфликтов мы используем: –префиксы; –специальный «ластик»; –инструкцию !important; –длинные селекторы; –случайные имена классов.

Нестандартная отрисовка иконок

Получение маски

Представление маски var aIconMask = [ [0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0], [0,0,0,0,0,0,0,1,1,1,1,1,0,0,0,0], [0,0,0,0,0,0,1,1,1,1,1,0,1,0,0,0], [0,0,0,0,0,1,1,1,0,1,0,1,0,0,0,0], [0,0,0,0,1,1,1,0,0,0,1,0,0,0,0,0], [0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0], [0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0], [0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0], [0,0,1,1,1,0,1,0,0,0,0,0,0,0,0,0], [0,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0], [0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0] ];

Функция отрисовки иконки var sIconCode = ''; for (var i = 0; i < aIconMask.length; i++) { var sIconRow = ''; for (var j = 0; j < aIconMask[i].length; j++) { sIconRow += aIconMask[i][j] ? ' ' : ' '; } sIconCode += ' ' + sIconRow + ' '; } sIconCode = ' ' + sIconCode + ' '; document.write(sIconCode);

HTML-код и стили... div.icon table {height: 16px; width: 16px;} div.icon td, div.icon th {height: 1px; width: 1px;} /* colors */ div.icon td {background-color: #eaedef;} div.icon th {background-color: #000000;}

Пример цветового оформления

Быстрый показ рекламы

Структура сайта на фреймах

Событие DOMContentLoaded /* Firefox, Opera */ if (document.addEventListener) { document.addEventListener('DOMContentLoaded', init, false); }

Решение для IE /* Internet Explorer */ document.write(' '); var script = document.getElementById('ie_onload'); script.onreadystatechange = function() { if (this.readyState == 'complete') { init(); } };

Решение для Safari /* Safari */ if (/WebKit|Khtml/i.test(navigator.userAgent)) { var timer = setInterval(function() { if (/loaded|complete/.test(document.readyState)) { clearInterval(timer); init(); } }, 1); }

Для остальных браузеров window.onload();

Динамический градиент

Элемент canvas var oCanvas = document.createElement('canvas'); var oContext = oCanvas.getContext('2d'); var oGradient = oContext.createLinearGradient(0, 0, 0, iBlockHeight); oGradient.addColorStop(0, sColorStart); oGradient.addColorStop(1, sColorEnd); oContext.fillStyle = oGradient; oContext.fillRect(0, 0, iBlockWidth, iBlockHeight);

Метод toDataURL() var sDataUrl = oContext.canvas.toDataURL('image/png'); oBlock.style.backgroundImage = 'url(' + sDataUrl + ')'; oBlock.style.backgroundRepeat = 'repeat-x'; oBlock.style.backgroundPosition = 'top';

Фильтр Gradient oBlock.style.filter = 'progid:DXImageTransform.Microsoft.Gradient(Enable d=true, GradientType=0, StartColorStr=' + sColorStart + ', EndColorStr=' + sColorEnd + ')';

Пример блока с градиентом

Поведение градиента при resize

Вертикальные надписи

Поворот и отражение

Код для IE Яндекс.Директ div.header {background-color: white; filter: flipv() fliph(); writing-mode: tb-rl;}

Формат SVG Яндекс.Директ

Примеры фиксированного блока

Другие решения «Выпрыгивание» из iframe Определение контрастности «Всплывающий» баннер

«Выпрыгивание» из iframe if (top.document && (self != top)) { try { if (self.document.domain != top.document.domain) isSameDomain = false; } catch (error) { isSameDomain = false; } if (!isSameDomain) { self.parent.location = document.location; }

Определение контрастности

Логотипы Яндекса

Вычисление яркости var sColor = '#393939'; var iRed = parseInt(sColor.substr(1, 2), 16); var iGreen = parseInt(sColor.substr(3, 2), 16); var iBlue = parseInt(sColor.substr(5, 2), 16); var fBrightness = (iRed * iGreen * iBlue * 114) / 1000; return (fBrightness > 125) ? 'black' : 'white';

Пример блока на темном фоне

«Всплывающий» баннер var oHtml = document.getElementsByTagName('html')[0]; if (!document.body) { oHtml.appendChild(document.createElement('body')); } var oBody = document.body; var oBlock = document.createElement('div'); oBlock.innerHTML = sHtml; oBody.insertBefore(oBlock, oBody.firstChild);

Спасибо за внимание! Юрий Беляков адрес: , Россия, Москва ул. Самокатная д. 1, стр. 21 телефон: +7 (495) факс: +7 (495) эл. почта: