JavaScriptの要素の幅を知る必要があります。問題は、関数があまりに早く起動し、CSSが完全に適用されたときに幅が変化することです。私が理解したように、$(document).ready()関数は、ドキュメントが完成したときに起動されましたが、そのようには動作しません。とにかく
が、私は私の問題を理解するであろうコードで(これは単純化した例である)ことを確信している:私は#targetのdiv要素の幅を知りたい
<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>
は、問題があることですアラートの前に実行されるコードは、フォントが完全に読み込まれていないため、デフォルトのフォントでdivを測定しているため、おそらく後の出力とは異なる出力を示します。
私はGoogle Chromeで期待どおり機能しますが、IEとFirefoxでは動作しません。
私はあなたがブラウザの更新ボタンを押したときに、この問題はまだjQueryの2.xの上に存在することを2013年11月24日を確認することができます。この[フィドル](http://jsfiddle.net/jLDbX/)に行ってください。あなたが最初にフィディドを読み込むと、ほとんどの場合、すべてがうまくいくはずです。また、マウスカーソルをURLに置き、Enterキーを押すと機能します。しかし、あなたがリフレッシュボタンをクリックするか* CTRL + R *を押すと物事は地獄に行きます。 –
私はウィンドウロードが起動したときと、依存フォントが終了したときだけ、幅と高さを測定するために "カウントダウンラッチ"を実装しようとしました。それが役立つかどうかを見てください:[http://jsfiddle.net/jLDbX/1/](http://jsfiddle.net/jLDbX/1/)。このフィドルでは、すべてが正しく動作しているようです。しかし、私の実際の世界のアプリケーションでは、私は間違いを続けていました。あなたのために、それは動作するかもしれません。 –