Ненавязчивый Unobtrusive JavaScript Сергеев Алексей «Открытые Веб-Технологии» ase@openwebtech.ru.

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



Advertisements
Похожие презентации
JavaScript и доступность веб- сайтов Владимир Агафонкин.
Advertisements

Разгони свой сайт Лекция 7: «Ненавязчивый» JavaScript Мациевский Николай 1 / 22 webo.in.
Действия выполняются в момент загрузки кода в браузер Действия выполняются в момент щелчка на ссылке.
Программирование в Mozilla По материалам сайта. Добавление Javascript в XUL-страницы Добавление страниц с текстом на Javascript происходит точно так же,
JS, or not JS, вот в чем вопрос Фитискин Александр веб-технолог студия «Dominion»
Разработка больших сайтов Сумин Андрей Разработчик интерфейсов
Введение в JavaScript. Общие сведения Web, как гипертекстовую систему, можно рассматривать с двух точек зрения. Во-первых, как совокупность отображаемых.
Лекция 8 Обработка событий. Примеры привязки обработчиков событий Привязка с помощью атрибута обработчика: ; Информация о модели DOM консорциума W3C Привязка.
Лекция 4 Объекты. Типы объектов ТипПример Источник реализации Регламентирующи й стандарт Пользовательский Определенные пользователем объекты Student или.
Объектная модель в JavaScript Объектная модель в языке JavaScript основана на прототипах в противоположность объектной модели, основанной на классах.
jQuery jQuery библиотека JavaScript, фокусирующаяся на взаимодействии JavaScript и HTML. Библиотека jQuery помогает легко получать доступ к любому элементу.
Проф. В.К.Толстых, Применение ASP.NET AJAX Extensions Asynchronous JavaScript And XML (Асинхронный JavaScript и XML) Основано на существующих.
Богданов Марат Робертович Современные веб-технологии. Подробный курс Введение в язык программирования JavaScript.
Работа с DOM-моделью и пользовательский интерфейс По материалам курса University of Washington
Язык JavaScript Скриптовый язык для выполнения на html-страницах.
WEB- ТЕХНОЛОГИИ Лекция 5. Традиционное Web- программирование 1.
1 Учебный курс Введение в JavaScript и CGI Лекция 1 Введение в JavaScript кандидат технических наук Павел Брониславович Храмцов
Боремся с «лишними» переходами на сайте, или еще пара слов о попапах и аяксах Талдыкин Егор Ardas Group.
CERN – European Organization for Nuclear Research IT Department – e – Business Section Прошлое, настоящее и будущее JavaScript Дж. Дрансфилд, Р. Титов.
СИНТАКСИС И УПРАВЛЯЮЩИЕ КОНСТРУКЦИИ JAVASCRIPT. Вставка скрипта. 1. В коде HTML-страницы … 2. Внешний файл.
Транксрипт:

Ненавязчивый Unobtrusive JavaScript Сергеев Алексей «Открытые Веб-Технологии»

ru Progressive Enhancement Всё содержание сайта доступно в любом браузере Вся функциональность доступна в любом браузере Семантическая верстка Представление отделено от содержания за счёт внешнего CSS Поведение отделено от содержания за счёт «Unobtrusive» JavaScript

ru Ненавязчивый JavaScript Главные принципы: весь JS-код находится во внешнем файле обработчики событий добавляются после загрузки страницы с помощью специальных функций стили добавляются за счёт атрибутов class и id, а не за счёт прямого указания значений внутри JavaScript-функций

ru Пример реализации Переход по ссылке, требующей авторизацию

ru Поиск необходимого элемента getElementById getElementsByTagName button = document.getElementById('submitter'); links = document.getElementsByTagName('a');

ru Поиск необходимого элемента О компании Продукция Контакты function getMenuLinks(){ var parentObj = document.getElementById('menu'); var menuLinks = parentObj.getElementsByTagName('a'); return menuLinks; }

ru Поиск необходимого элемента function getRequired(){ var inputs = document.getElementsByTagName('input'); var requiredInputs = new Array; for ( var i = 0; i < inputs.length; i++ ) { if ( inputs[i].className.match('required) ) requiredInputs.push(inputs[i]); } return requiredInputs; }

ru Дерево элементов

ru Добавление обработчика Плохие способы document.getElementById('login').onclick = function(){ … }

ru Добавление обработчика DOM event model: addEventListener removeEventListener MSIE: attachEvent detachEvent

ru Добавление обработчика function addEvent(obj, evType, func, useCapture){ if (obj.addEventListener){ obj.addEventListener(evType, func, useCapture); return true; } else if (obj.attachEvent){ var r = obj.attachEvent('on'+evType, func); return r; } else { obj['on'+evType] = func; }

ru Отмена исходного действия DOM event model: preventDefault stopPropagation MSIE: window.event.returnValue window.event.cancelBubble

ru Отмена исходного действия function cancelDefault(e){ if ( e && e.preventDefault && e.stopPropagation() ){ e.stopPropagation(); e.preventDefault(); } if ( window.event ){ window.event.cancelBubble = true; window.event.returnValue = false; }

ru Источник события DOM Event Model e.target MSIE window.event.srcElement if ( window.event && window.event.srcElement ){ elem = window.event.srcElement; } else if ( e && e.target ) { elem = e.target; } else { return; }

ru AJAX Сначала не-AJAX версия Добавьте обработчики событий, которые вместо ссылок и кнопок будут пересылать данные на сервер через XMLHttpRequest Используте атрибуты href и action Для простоты используйте AHAH (Asynchronous HTML and HTTP)

ru Спасибо за внимание!