Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
инфа1.doc
Скачиваний:
10
Добавлен:
17.04.2019
Размер:
350.21 Кб
Скачать

Возможные значения

Название атрибута не зависит от регистра

Атрибуты с именами "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 RailsTapestryscript.aculo.us и Rico.

Заявлено, что данный фреймворк поддерживается следующими браузерами: Internet Explorer (Windows) 6.0+, Mozilla Firefox 1.5+, Apple Safari2.0+ и Opera 9.25+. Поддержка данных браузеров также подразумевает, что фреймворк поддерживается также CaminoKonquerorIceWeasel,Netscape 7+, SeaMonkey, и др., которые принадлежат этим же семействам.