safari返回值“正常”为“行高”样式

时间:2010-07-07 01:41:00

标签: javascript safari css

这是我的问题: 我打电话的时候 document.defaultView.getComputedStyle(Node,“”)。getPropertyValue(“line-height”)

当没有指定行高时,

safari返回字符串“normal”,而firefox总是返回以像素为单位的值。

这给我带来了一个很大的问题,特别是因为我没有找到一个可靠的公式来获得数值(我发现它应该在1em和1.3之间,但没有精确)。

有解决方案吗?

2 个答案:

答案 0 :(得分:1)

我找到了部分解决方案:

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;
    } 

对于那些想知道为什么“innerHTML”中的所有“br”井offsetHeight返回整数值的人,所以使用10行节点并将结果除以10可得到更准确的答案。

答案 1 :(得分:0)

不,没有解决方案。浏览器之间的默认值总是不同,因为默认值没有标准。

用户可以设置自己的样式表来覆盖标准,这样您甚至可以从同一浏览器的两个不同实例中获得不同的结果。