Блог

Javascritpt/Bug:bug в IE 7

Встретился с проблемой в IE 7, простая запись вида:

image  = document.createElement('img');
image.src = src;
image.setAttribute('style', 'position:absolute;border:5px solid #ffffff;');

Такая запись не скажет об ошибке, просто ничего не произойдет. Отработается метод, а стиль не будет присвоен. Конечно вы можете написать к примеру вот так:

image  = document.createElement('img');
image.src = src;
image.style.position = 'absolute';
image.style.border = '5px solid #ffffff';

Ближе к делу

Строковое значение атрибута стиля доступно как на чтение / запись строки называется cssText, который является свойством объекта стиля, который сам является свойством элемента. Однако следует отметить, что она не поддерживается очень хорошо; Safari не поддерживает его до версии 1.1 (чтение было произведено значение null), Mozilla версий до 1.0 не мог написать к нему. Чтобы избежать проблем с его использованием, сочетание cssText и GetAttribute / SetAttribute могут быть использованы. Чтобы прочитать его:

var cssString;
cssString = element.style.cssText;
if(typeof (cssString)! = 'string') {
   cssString = element.getAttribute ('style');
}

Чтобы написать ее, просто установите обе версии, и браузер будет использовать ту, работ:

var cssString = 'position:absolute; border:5px solid #ffffff;';
element.style.cssText = cssString;
element.setAttribute ('style', cssString);

Заметим, что это то предотвратить его правильно читать, если другие стили меняются по отдельности. Если это вызовет проблему, проверьте, если cssText поддерживается первым:

var cssString = 'position:absolute;border:5px solid #ffffff;';
if(typeof(element.style.cssText) == 'string') { 
   element.style.cssText = cssString;
} 
element.setAttribute ('style', cssString);