[解決済み] jquery $(window).width() と $(window).height() は、ビューポートがリサイズされていない場合、異なる値を返します。
質問
jqueryを使用して、繰り返し
$(window).width()
と
$(window).height()
で、ビューポートサイズに基づいた要素の位置や大きさを指定します。
トラブルシューティングで、ビューポートがリサイズされていないときに上記のjquery関数を繰り返し呼び出すと、わずかに異なるビューポートサイズのレポートが得られることを発見しました。
この現象が起こるとき、何か特別なケースがあるかどうか、またはこれが単なる方法であるかどうか、誰もが知っているかと思います。報告されたサイズの差は 20px 以下のようです。この現象は、Mac OS X 10.6.2 上の Safari 4.0.4, Firefox 3.6.2 および Chrome 5.0.342.7 beta で発生します。ブラウザに固有の現象ではないようなので、他のブラウザはまだテストしていません。また、この違いが何に依存するのか把握できませんでした。もしビューポート サイズでないのなら、結果を違える別の要因があるのでしょうか?
どんな洞察でもかまいません。
を更新しました。
の値ではなく
$(window).width()
と
$(window).height()
が変化していることです。上記の値を格納するために使用している変数の値です。
値が変化するのはスクロールバーではなく、変数の値が変化してもスクロールバーは表示されません。以下は、変数に値を格納するための私のコードです (これは、単に短くするために行っています)。
(これはすべて
$(document).ready()
)
の中の他の関数から見えるようにするために、 //最初に変数を宣言します。
.ready()
var windowWidth = $(window).width(); //retrieve current window width
var windowHeight = $(window).height(); //retrieve current window height
var documentWidth = $(document).width(); //retrieve current document width
var documentHeight = $(document).height(); //retrieve current document height
var vScrollPosition = $(document).scrollTop(); //retrieve the document scroll ToP position
var hScrollPosition = $(document).scrollLeft(); //retrieve the document scroll Left position
function onm_window_parameters(){ //called on viewer reload, screen resize or scroll
windowWidth = $(window).width(); //retrieve current window width
windowHeight = $(window).height(); //retrieve current window height
documentWidth = $(document).width(); //retrieve current document width
documentHeight = $(document).height(); //retrieve current document height
vScrollPosition = $(document).scrollTop(); //retrieve the document scroll ToP position
hScrollPosition = $(document).scrollLeft(); //retrieve the document scroll Left position
}; //end function onm_window_parameters()
上記の変数が保持しているはずの値に対して、アラートステートメントを挿入して調べてみました。その
$(item).param()
の値は一貫していますが、私の変数は私が理解できない理由で変化しています。
私のコードが、設定された値を取得するのとは対照的に、問題の変数の値を変更しているかもしれない場所を探しましたが、何も見つけることができませんでした。それが可能であるなら、私はその全体をどこかに投稿することができます。
どのように解決するのですか?
表示されているのは、スクロールバーの非表示と表示だと思います。 幅の変更を示す簡単なデモを以下に示します。 .
余談ですが、常にポーリングする必要があるのでしょうか? このように、resizeイベントで実行するようにコードを最適化することができるかもしれません。
$(window).resize(function() {
//update stuff
});
関連
-
[解決済み] 高さと幅はspanには適用されないのですか?
-
[解決済み] jquery mobileでページ中央のグリッド表示
-
[解決済み] クラスメソッド内の "this "をタイプスクリプトで記述する
-
[解決済み] jQueryのイベントハンドラを削除する最良の方法?
-
[解決済み] セレクトした要素の外側のHTMLを取得する
-
[解決済み] GoogleのCDNからjQuery UI CSSをダウンロードする
-
[解決済み] jQueryを使ってロールオーバー時に画像ソースを変更する
-
[解決済み] jQuery OR Selector?
-
[解決済み] jQueryのn番目の要素を取得する方法
-
[解決済み] HTML5 Canvas 100% Width Height of Viewport?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] jQueryのpreventDefault()が発動しない
-
[解決済み] GoogleのホストされたjQueryを使用する最良の方法、しかしGoogleの私のホストされたライブラリにフォールバックすることは失敗します。
-
[解決済み] セレクトした要素の外側のHTMLを取得する
-
[解決済み] CSSを使用してSVG画像の色を変更する方法(jQuery SVG image replacement)とは?
-
[解決済み] jQueryを使ってロールオーバー時に画像ソースを変更する
-
[解決済み] .text()を使って子タグにネストされていないテキストのみを取得する方法
-
[解決済み] jQuery: outer html() [重複]。
-
[解決済み] jQueryで、ある要素を他の要素に対して相対的に配置するには?
-
[解決済み] jQueryを使用して要素の型を検索する
-
[解決済み] jQuery / JavaScriptでJSONデータをパースする方法は?