1

コードの複数のインスタンスをテストしましたが、理解できない矛盾がいくつかあります。だから私はあなたが賢い人が助けることができることを願っています。

ヘッダーにこのjqueryコードがあります

function real_image_size () {
    var img = document.getElementById('target'); 
    //or however you get a handle to the IMG
    var real_width = img.clientWidth;
    var real_height = img.clientHeight;

    $('#rw').attr('value', real_width);
    $('#rh').attr('value', real_height);

}

表示された画像のサイズで更新したいこのhtml/phpコードがあります

<img width="1000px" class="crop_img" id="target" src="$image_address" />


<form action="/save_cropped_image.php" method="post" onsubmit="checkCoords();">
      <input type="text" size="4" id="image_source" name="image_source" hidden="hidden" value="$image_address" />
      <input id="x" name="x" />
      <input id="y" name="y" />
      <input id="w" name="w" />
      <input id="h" name="h" />
      <input id="rw" name="rw" />
      <input id="rh" name="rh" />
      <input type="submit" value="Lagre nytt bilde" />
</form>

ページがレンダリングされるとき、入力フィールドに表示された画像のサイズを入力するスクリプトを実行してrwrhます$target

私の問題は、rwが正しく更新されているのに、rh常に「2」に更新されていることです。ページが最初にレンダリングされたとき。

ドロップダウンボックスから別の画像を選択した場合(コードには記載されていません)。次に、スクリプトはとを更新し#image、次に両方rwrh更新し、同じ関数を使用して正しく更新されますが、 ...(image_size_update())だけではありません。rw

</script>

    <script>
    $(window).ready(real_image_size());

</script>

- - - アップデート - - -

画像を読み込んだ後、関数にsetTimeoutを追加しようとしました。しかし、変更はありません...それでも間違ったrh(real_image_height)を取得します

$('#target').load(setTimeout(real_image_size(),10000));
4

2 に答える 2

1

あなたの問題は単純ですが、非常に目立たないものです。事実上、ロード時に画像がまだロードされていない可能性があります。ブラウザはすでにその幅を知っていますが(全体を通して一定であり、おそらく画像の少なくとも一部をすでにレンダリングしているため)、全体の高さはわかりません。

最初の画像が完全に読み込まれるまで、JS呼び出しをずらす必要があります。これは、jQueryを使用してloaded()イベントを使用するか、onLoadイベントを使用するプレーンJavaScriptで実行できます(これらは同じです)。これにより、正しい値が得られるはずです。

于 2012-11-18T13:24:11.477 に答える
1

$(window).load代わりに試してくださいready

于 2012-11-18T13:24:58.303 に答える