- •Виды различаются от версии языка, на которого ориентированы.
- •Параметры
- •Для атрибутов тегов используются значения по умолчанию
- •Порядок атрибутов в тегах
- •Формат атрибутов
- •7) Css спрайты. Data: uri.
- •«Зачем мне это надо?»
- •Основные достоинства
- •Уровень 1 (css1)
- •[Править]Уровень 2 (css2)
- •[Править]Уровень 2, ревизия 1 (css2.1)
- •[Править]Уровень 3 (css3)
- •10) JavaScript. Что такое и зачем нужен. Альтернативы.
- •Что такое javascript?
- •Что умеет javascript?
- •Уникальность javascript
- •Другие технологии. Альтернативы javascript.
- •Фабрика объектов
- •Создание потомка
- •Простейший dom
- •14) Атрибуты dom объектов и свойства. Чем отличаются.
- •Свойства dom-элементов
- •Синхронизация
- •Возможные значения
- •[Править]Возможности
- •[Править]Объект Ajax
- •[Править]Класс Element
- •16) Как работает Sizzle (примерно).
- •17) Когда js - это плохо. Примеры.
Возможные значения
Название атрибута не зависит от регистра
Атрибуты с именами "abc" и "ABC" - один и тот же атрибут.
1 |
document.body.setAttribute('abc', 1) |
2 |
document.body.setAttribute('ABC', 5) |
3 |
alert(document.body.getAttribute('abc')) // => стало 5 |
Но свойства в разных регистрах - два разных свойства.
1 |
document.body.abc = 1 |
2 |
document.body.ABC = 5 |
3 |
alert(document.body.abc) // => все еще 1 |
Увы, в Internet Explorer версии до 8.0 с этим проблемы. Этот браузер старается по возможности уравнять свойства и атрибуты. Но как быть, если свойства - регистрозависимы, а атрибуты - нет?
Создатели IE поступили хитро: setAttribute ставит оба свойства (abc и ABC).. Ну аgetAttribute возвращает первое попавшееся из них, с учетом регистронезависимости. Если таких свойств несколько, то невозможно сказать, какое именно он вернет.
01 |
document.body.setAttribute('abc', 1) |
02 |
document.body.setAttribute('ABC', 5) |
03 |
|
|
04 |
// IE пытается уравнять свойства и атрибуты |
05 |
alert(document.body.abc) // => 1 |
06 |
alert(document.body.ABC) // => 5 |
07 |
|
|
08 |
// но getAttribute выбирает первое попавшееся свойство |
09 |
// за вычетом регистра букв |
|
10 |
alert(document.body.getAttribute('abc')) // => 1 |
11 |
alert(document.body.getAttribute('ABC')) // => 1 |
Запустите этот пример в IE6/7 и, например, в Firefox, чтобы лучше понять различия.
Атрибут можно установить любой, а свойство - нет
Например, можно установить для тэга <body> атрибут tagName, но соответствующее свойство - только для чтения, поэтому оно не изменится:
document.body.setAttribute('tagName',1) |
|
document.body.getAttribute('tagName') // 1 |
document.body.tagName // "BODY" |
Вообще говоря, браузер не гарантирует синхронизацию атрибута и свойства.
Атрибуты и обработчики событий
В IE текстовое значение, присвоенное атрибуту onclick, не является функцией и не будет работать:
elem.setAttribute('onclick', 'alert(something)') // в IE не работает |
Firefox корректно преобразовывает строку в функцию, поэтому там этот фрагмент работать будет. Но, вообще говоря, никакой браузер не обязан этого делать.
Атрибут - это строка (кроме IE)
Следующий код это наглядно демонстрирует:
document.body.setAttribute('v',{a:5}) |
|
alert(document.body.getAttribute('v')) // "[object Object]" в Firefox |
alert(document.body.getAttribute('v').a) // 5 в IE |
В первой строке атрибуту присвоено значение-объект. Firefox тут же автоматически преобразовал его в строку. А IE, в нарушение стандартов, оставил атрибут объектом.
Исключение className
Как уже говорилось в разделе о синхронизации, атрибуту class соответствует свойство className. Так получилось из-за того, что class является зарезервированным словом javascript.
В IE также является исключением атрибут for, для него используется свойствоforHtml.
Cвойство элемента и атрибут - это разные вещи. Не используйте одно вместо другого.
15) Что такое JS фреймворк. Примеры.
Фреймворк (англ. framework — каркас[1], структура[1], сфера деятельности[2]) — в информационных системах структура программной системы; программное обеспечение, облегчающее разработку и объединение разных компонентов большого программного проекта. В отличие от библиотек, которые объединяют набор подпрограмм близкой функциональности, каркас содержит в себе большое количество разных по назначению библиотек. Употребляется также слово каркас, а некоторые авторы используют его в качестве основного[3].
Prototype — JavaScript фреймворк, упрощающий работу с Ajax и некоторыми другими функциями. Несмотря на его доступность в виде отдельной библиотеки, он обычно используется программистами вместе с Ruby on Rails, Tapestry, script.aculo.us и Rico.
Заявлено, что данный фреймворк поддерживается следующими браузерами: Internet Explorer (Windows) 6.0+, Mozilla Firefox 1.5+, Apple Safari2.0+ и Opera 9.25+. Поддержка данных браузеров также подразумевает, что фреймворк поддерживается также Camino, Konqueror, IceWeasel,Netscape 7+, SeaMonkey, и др., которые принадлежат этим же семействам.