Попытка понять, как jQuery вычисляет вычисляемые свойства для IE8 с использованием currentStyle

Я пытаюсь понять, как jQuery достигает значений пикселей для IE8 при работе со значениями свойств, не основанными на пикселях, такими как margin-top: 2em или даже что-то вроде height: auto. Для IE9 + getComputedStyle(), очевидно, может легко обеспечить это, но в случае IE8 currentStyle нет. Я пытаюсь найти решение, позволяющее рассчитать общую высоту элемента, включая высоту CSS, отступы, границы и поля для всех браузеров IE8 +. Я нашел следующий ответ, но не могу понять, что происходит в принятом ответе.

Кроссбраузерность (IE8-) getComputedStyle с Javascript?

Мне было интересно, может ли кто-нибудь объяснить, что происходит в этом коде?


person Joe    schedule 02.12.2014    source источник


Ответы (1)


вот прокладка для вычисляемого стиля из WebPlatform.

if (!window.wpo) { window.wpo = {}; }
if (!wpo.utils) { wpo.utils = {}; }

wpo.utils.getComputedStyle = function(_elem, _style)
{// wpo getComputedStyle shim.
   var computedStyle;
   if (typeof _elem.currentStyle != 'undefined')
     { computedStyle = _elem.currentStyle; }
   else
     { try{computedStyle = document.defaultView.getComputedStyle(_elem, null);}catch(e){return '';} }

  return computedStyle[_style];
}

person Rob Parsons    schedule 02.12.2014
comment
Я ценю ответ, но не думаю, что он решает мою главную проблему, а именно, как IE8 сможет получить доступ или вычислить непиксельные значения для свойств, таких как margin: 2em; или height: auto;. - person Joe; 03.12.2014