По умолчанию, многие из вас знают, IE имеет 2px границу вокруг тега body.IE считает эту границу за пределами обычной страницы.По сути, это означает, что источник документа на самом деле имеет значение [borderLeftWidth, borderTopWidth].
Это создает проблемы при выполнении вычислений в JavaScript, которые требуют как clientXY, так и screenXY.Поскольку между двумя значениями есть граница, вы должны компенсировать это, добавив borderWidth.По умолчанию эта граница составляет 2 пикселя (если вы не изменяете страницу).
Однако, так как тело может иметь также определенную пользователем рамку (например, сплошной красный цвет 7px), вы не можете просто компенсировать, добавив иливычитая 2px.Очевидно, вам нужно использовать фактическое значение document.body.currentStyle['borderTopWidth']
.По умолчанию это возвращает medium
.Поскольку значение medium
может варьироваться в зависимости от версии браузера, вам необходимо выполнить проверку getPixelValue (я использовал: http://blog.stchur.com/2006/09/20/converting-to-pixels-with-javascript/).
При выполнении этой проверки medium
возвращает 4px
. Но это не так! Граница тела на самом деле 2px
, хотя она говорит о medium
. Это заставило меня задуматься, IE может по-разному отображать значения для границы тела. Но после ручной установки borderWidth на medium
, он исправляет себя до 4pxПо какой-то причине, IE лежит в теле borderWidth по умолчанию.
Итак, мой вопрос: есть ли способ получить реальное значение границы тела? Или есть способ проверить, есть ли у пользователяустановить границу уже (таким образом, она больше не является 2px по умолчанию). Выполнение проверки измененной пользователем границы определенно было бы моим последним средством, так как IE может решить удалить границу по умолчанию, таким образом нарушая мои сценарии.