所以,我需要使用JavaScript获取一个元素的宽度,但我的问题是函数在太早触发,当CSS完全应用时宽度会发生变化。据我所知,$(document).ready()函数在文档完成时被触发,但它似乎并不像这样工作。
无论如何,我相信通过代码可以理解我的问题(以下是一个简化的示例):
<html>
<head>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<link href='http://fonts.googleapis.com/css?family=Parisienne' rel='stylesheet' type='text/css'>
<style type="text/css">
#target {
font-family: 'Parisienne', cursive;
float: left;
}
</style>
</head>
<body>
<div id="target">Element</div>
</body>
</html>
<script type="text/javascript">
$(document).ready(function(){
console.debug($('#target').outerWidth());
alert('hold on');
console.debug($('#target').outerWidth());
});
</script>
我想知道 #target div 的宽度,问题在于在弹出警告框之前执行的代码和之后执行的代码给出不同的输出,可能是因为字体没有完全加载而且正在使用默认字体测量 div 的大小。
在 Google Chrome 中按照我的期望工作,但在 IE 和 Firefox 中不起作用。