Он также не работает в IE <= 8 </p>
Причина в том, что currentStyle
и getComputedStyle
работают по-разному в этом случае.Если бы вы сначала тестировали getComputedStyle
, то сработало бы как в Opera, так и в IE 9-10.Opera во многих случаях пытается имитировать IE (см. innerText vs textContent
), поэтому она тоже имеет currentStyle
.
НО, пожалуйста, обратите внимание, что вы потеряете свое "ожидаемое" поведение, еслирассматриваемый элемент имеет display:inline
в своем стиле (FF, Chrome, IE), потому что они сообщат вам «авто» ... кроме ... как вы уже догадались, в Opera, который затем покажетВы "правильная" px
ширина элемента.
Если вам нужна целевая функция general , вам лучше включить целевую библиотеку general (которая, как вынайдут заполнены крайние случаи, которые вам никогда не понадобятся).Если у вас есть специфическая цель, которую нужно решить, вы можете использовать совместимую замену.
Вычисленный стиль не очень полезен для вас в этом случае.Что вам нужно, это, вероятно, clientWidth
, offsetWidth
или scrollWidth
в зависимости от ваших потребностей.Они отличаются главным образом тем, хотите ли вы добавить отступы, border
, margin
и / или обрезанные области (в случае горизонтального переполнения контента).
Они поддерживаются даже в старых браузерах, таких как IE 6, вФактически эти свойства были впервые введены MS еще во время первой войны браузеров (точно так же, как innerHTML
).
Вы можете узнать больше о них, прибегая к помощи MSDN или MDN.