возвращаемое сафари значение "нормальный" для стиля "высота строки" - PullRequest
0 голосов
/ 07 июля 2010

Вот моя проблема: когда я вызываю document.defaultView.getComputedStyle (Node, "") .getPropertyValue ("line-height")

safari возвращает строку "normal", если не указана высота строкиуказан, тогда как firefox всегда возвращает значение в пикселях.

Это создает большую проблему, особенно потому, что я не нашел надежную формулу для получения числового значения (я обнаружил, что оно должно быть между 1em и 1.3, ноничего точного).

Есть ли решение?

Ответы [ 2 ]

1 голос
/ 08 июля 2010

Ну, я нашел частичное решение:

function getLineHeight(node){
        var clh=document.defaultView.getComputedStyle(node, "").getPropertyValue("line-height");
        var copy;
        if (clh=="normal"){

            copy=node.cloneNode(false);
            copy.style.padding=0+"px";
            copy.style.border="none";
            copy.innerHTML="x <br> x <br> x <br> x <br> x <br> x <br> x <br> x <br> x <br> x";
            node.parentNode.insertBefore(copy, node);
            clh=copy.offsetHeight/10;
            node.parentNode.removeChild(copy);
            delete copy;
        }
        else clh=parseFloat(clh);
        return clh;
    } 

Для тех, кто задается вопросом, почему все эти "br" в лунке "innerHTML" offsetHeight возвращает целочисленные значения, поэтому использование узла из 10 строк и деление результата на 10 дает более точный ответ.

0 голосов
/ 07 июля 2010

Нет, решения нет.Значения по умолчанию всегда будут отличаться в разных браузерах, так как не существует стандарта для того, какими должны быть значения по умолчанию.

Пользователи могут устанавливать свои собственные таблицы стилей для переопределения стандартов, поэтому вы даже можете получить разные результаты из двух разных случаевтот же браузер.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...