1

ウィンドウのサイズ変更時に実行されるコードがあります。入力テキスト要素のwidthとをプルしています。outerWidth

このプロセスは、 から適切な結果を返す Webkit を除くすべてのブラウザーで正常に機能しますouterWidthが、 からの結果はロード時のオリジナルから決して変化しません。width

これは、ブラウザ ウィンドウのサイズを変更するときのスクリプトからの実際のコンソール出力です (これは Chrome ですが、Safari 4 でも同じことが起こります)。

outerWidth: 772
width: 772
outerWidth: 773
width: 772
outerWidth: 773
width: 772
outerWidth: 794
width: 772
outerWidth: 794
width: 772
outerWidth: 815
width: 772
outerWidth: 815
width: 772
outerWidth: 820
width: 772
outerWidth: 837
width: 772

誰もこれを経験したことがありますか?なぜそれが起こるのか知っていますか?そして最も重要なことは、それを回避する方法を知っていますか? :)

ありがとうございました。

4

1 に答える 1

0

これが私のテストケースです。どちらも期待どおりに機能しているようです(Safari4)。

<html>
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
  <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
  <style type="text/css">
    input {
      width: 50%;
      height: 2em;
      font-size: 1em;
    }
  </style>
</head>
<body>
  <p>
    <input type="text" id="w" />
  </p>
  <p>
    <input type="text" id="ow" />
  </p>
  <script type="text/javascript">
    function init(){
      $('#w').val($('#w').width());
      $('#ow').val($('#ow').outerWidth());
    }
    $(function(){
      init();

      $(window).resize(function(){
        init();
      });
    });
  </script>
</body>
</html>
于 2009-08-02T17:04:48.147 に答える