Главная
К библиотеке


Доступ к атрибутам стиля в IE и NN

Одна из основных проблем при создании страниц, предназначенных для просмотра как Internet Explorer, таки Netscpe Navigator, это то, что доступ к атрибутам стиля организован несколько по-разному.

Создадим элемент <DIV> с помощью следующего кода:

<DIV ID="myDiv" STYLE="position:absolute; left:50px; top:100px;
width:30px; height:30px; clip:rect(0px 30px 30px 0px);
background-color:red; layer-background-color:red;">
</DIV>
Необходимо помнить, что в Netscpe Navigator, для корректного отображения пустого элемента следует указывать атрибуты layer-background-color и clip. Кроме того элемент должен быть позиционирован заданием атрибута position: absolute или position: relative

В этом случае для того, чтобы изменить цвет фона в NN следует использовать следующий код:

document.myDiv.bgColor = "blue"
или
document.layers["myDiv"].bgColor = "blue"

Тогда как в IE необходимо поступить следующим образом:

myDiv.style.backgroundColor = "blue"
или
document.all["myDiv"].backgroundColor = "blue"

Таким образом мы видим, что отличаются не только наименования атрибутов, но и способ их хранения. В общем случае (если наименования атрибутов совпадают) можно воспользоваться следующим кодом, который создает переменную для доступа к свойствам стиля:

if (NN) { var thisStyle = document.myDiv }
if (IE) { var thisStyle = myDiv.style }

Теперь для получения, например, горизонтальной координаты объекта можно использовать следующий код:

alert(thisStyle.Left);

Для более сложных случаев (например с цветом фона) можно воспользоваться функциями следующего вида:

function getBGColor ( o ) {
   if (NN) { return(o.bgColor) }
   if (IE) { return(o.style.backgroundColor) }
}
function setBGColor ( o, color ) {
   if (NN) { o.bgColor = color }
   if (IE) { o.style.backgroundColor = color }
}

Кроме того необходимо помнить, что свойство left в IE содержит значение с указанием единицы измерения (в нашем случае это будет "50px"). Для получения этого (и других "координатных") значений в пикселях необходимо использовать свойство pixelLeft (pixelTop и т.д.)

Пример использования описанных методов: styleattr.html


Материал с сайта http://exper.ural.ru
Hosted by uCoz