所以,我需要知道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