renovations
This commit is contained in:
parent
6444024a9d
commit
fad6615c42
22 changed files with 94 additions and 161 deletions
|
@ -473,12 +473,13 @@ div.classList.add('order-state-canceled');
|
|||
```
|
||||
|
||||
|
||||
## "Особенности" IE8-
|
||||
## "Особенности" IE8
|
||||
|
||||
Если вам нужна поддержка этих версий IE -- есть пара нюансов.
|
||||
|
||||
Если вам нужна поддержка этих версий IE -- ознакомьтесь с их проблемами. Ничего критичного, но они, всё же, есть.
|
||||
|
||||
<ol>
|
||||
<li>Во-первых, версии IE8- синхронизируют <u>все</u> свойства и атрибуты, а не только стандартные:
|
||||
<li>Во-первых, версии IE8- синхронизируют все свойства и атрибуты, а не только стандартные:
|
||||
|
||||
```js
|
||||
//+ run
|
||||
|
@ -489,31 +490,11 @@ alert( document.body.my ); // 123 в IE8-
|
|||
|
||||
При этом даже тип данных не меняется. Атрибут не становится строкой, как ему положено.
|
||||
</li>
|
||||
<li>Во-вторых, в IE7- (или в IE8 в режиме совместимости с IE7) свойства и атрибуты -- одно и то же.
|
||||
|
||||
Поэтому возникают забавные казусы.
|
||||
|
||||
Например, названия свойств регистрозависимы, а названия атрибутов -- нет. Что будет если два свойства имеют одинаковое имя в разном регистре? Как поведет себя соответствующий атрибут?
|
||||
|
||||
```js
|
||||
//+ run
|
||||
document.body.abba = 1; // задаем свойство
|
||||
document.body.ABBA = 5; // задаем свойство, теперь уже прописными буквами
|
||||
|
||||
// запрашиваем атрибут в *!*смешаном*/!* регистре
|
||||
alert( document.body.getAttribute('AbBa') ); // что должен вернуть браузер?
|
||||
```
|
||||
|
||||
Браузер выходит из ситуации, возвращая первое назначенное свойство(`abba`). Также, в IE8- существует второй параметр для `getAttribute`, который делает его чувствительным к регистру. Подробнее тут:<a href="http://msdn.microsoft.com/en-us/library/ms536429(v=vs.85).aspx">MSDN getAttribute</a>.
|
||||
</li>
|
||||
<li>Ещё одна некорректность IE8-: для изменения класса нужно использовать именно свойство `className/classList`, вызов `setAttribute('class', ...)` не сработает.</li>
|
||||
<li>Ещё одна некорректность IE8-: для изменения класса нужно использовать именно свойство `className`, вызов `setAttribute('class', ...)` не сработает.</li>
|
||||
</ol>
|
||||
|
||||
Вывод из этого довольно прост -- чтобы не иметь проблем в IE8, нужно использовать всегда только свойства, кроме тех ситуаций, когда нужны именно атрибуты. Впрочем, это в любом случае хорошая практика.
|
||||
|
||||
А для IE7- тонких различий между свойствами и атрибутами, о которых мы говорили выше, нет. Впрочем, надеюсь, вам эти версии IE поддерживать не придётся.
|
||||
|
||||
|
||||
## Итого
|
||||
|
||||
<ul>
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue