【发布时间】:2012-02-03 20:15:36
【问题描述】:
所以,我需要用 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 上却不行。
【问题讨论】:
-
我可以在 2013 年 11 月 24 日确认,当您点击浏览器的刷新按钮时,这个问题在 JQuery 2.x 上仍然存在。转到此fiddle。当您第一次加载小提琴时,大多数时候一切都应该正常工作。如果您将鼠标光标放在 URL 中并按 Enter 键,它也可以工作。但是,如果您单击刷新按钮或按 CTRL+R,事情将一败涂地。
-
我试图实现一个“倒计时锁存器”来测量宽度和高度,只有当窗口加载触发并且依赖字体完成触发时。看看是否有帮助:http://jsfiddle.net/jLDbX/1/。在这个小提琴中,一切似乎都运行得恰到好处。但在我的现实世界应用程序中,我不断收到错误。不过对你来说,它可能有用。
标签: javascript jquery dom