我使用Mustache生成一些HTML并用于insertAdjacentHTML将其放在页面上.它显然转换为DOM结构,因为我可以通过使用document.querySelector('.contentarea')调用来获得它的句柄.但是,如果我尝试获取宽度或高度的像素值,它会不断回击'auto'.
认为它可能只是一个问题getComputedStyle,我尝试使用.getBoundingClientRect而.offsetWidth不是.无论返回0.它可以工作,如果我把它放在一个稍微延迟调用setTimeout(function(){}, 1),但这对我的生产代码不实用,因为它需要进入同步构造函数.
这种情况在Firefox(Aurora)和Chrome中都有发生.我记得读过一篇关于Mozilla如何通过使用惰性框架构造来改进DOM操作性能的文章,并认为框架可能存在一些有点过于懒惰的错误,但是因为它也在Chrome中发生,所以这似乎不太可能.
有没有人对这里发生的事情或如何解决这个问题有任何想法?插入HTML后,我真的需要像素高度/宽度信息.
PS:是否有任何浏览器在单独的线程中进行HTML解析/构建?我在想这可能会导致这种行为.
NEVERMIND:这是我自己的错.我只是没有注意到display: none;在代码尝试获取测量值之前设置的样式.
我正在编写一个简单的jQuery,用于将元素的字体大小更改一定百分比.我遇到的问题是,当我使用jQuery的$('#el').css('font-size')获得大小时,它总是返回一个像素值,即使用em设置也是如此.当我使用Javscript的el.style.font-size属性时,它将不会返回一个值,直到一个值被同一属性显式设置.
有什么方法可以用Javascript获得原始CSS设置的字体大小值吗?您的方法如何跨浏览器友好?
提前致谢!
编辑:我应该注意所有经过测试的浏览器(请参阅下面的评论)允许我使用上面提到的两种方法使用'em'值设置文本大小,此时jQuery .css()返回一个等效的' px'的值和Javascript .style.fontSize方法返回正确的'em'值.也许最好的方法是在页面加载时初始化元素,立即为它们提供em值.
我需要知道元素是否具有流体宽度.我可以深入了解为什么如果它真的需要,但我不认为它.
基本上,是元素的N%宽度还是Npx|pt|em|etc宽度?现在我只看到获得当前计算宽度的方法.因此,即使一个元素是100%宽,获取JS中的值也会返回,500px或者在那个时刻返回广泛的值.
是否有任何黑客或JS API我不知道要知道这个或获得原始的CSS值?
另外,请不要jQuery.这是我的JS库.