所以,我需要知道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的宽度,问题是,在alert之前执行的代码会给出与之后不同的输出,这可能是因为字体未完全加载,并且它使用默认字体测量div。
它可以像我期望的那样在Google Chrome中使用,但不会在IE和Firefox上使用。
我可以确认2013年11月24日,这个问题jQuery的2.X仍然存在,当你点击浏览器的刷新按钮。转到此[小提琴](http://jsfiddle.net/jLDbX/)。当你第一次加载小提琴时,一切都应该在大多数时候都正常工作。如果将鼠标放在URL中并按回车,它也可以工作。但是如果你点击刷新按钮或点击* CTRL + R *,事情就会变得糟糕透了。 – 2013-11-24 11:48:15
我试图实现一个“倒计时锁存器”来测量宽度和高度,只有当窗口负载被触发和依赖字体完成触发时。看看是否有帮助:[http://jsfiddle.net/jLDbX/1/](http://jsfiddle.net/jLDbX/1/)。在这个小提琴中,一切看起来都是正确的。但在我的真实世界的应用程序中,我不断收到错误。对你来说,它可能会起作用。 – 2013-11-24 13:10:29