わかりました、これは本当に簡単だと思っていましたが、そうではありませんでした。HTML/CSSで何かを台無しにしているだけだと思いますが、ここに行きます。
次のような基本的なページがあります。
HTML
<!DOCTYPE html>
<html>
<head>
<link href='test2.css' rel="stylesheet" type="text/css" />
<script src="http://code.jquery.com/jquery-1.10.2.js"></script>
<script src="test2.js"></script>
</head>
<body>
<div id="scroll"></div>
</body>
</html>
test2.css
* {
padding: 0;
margin: 0;
}
html, body {
height: 100%;
width: 100%;
}
#scroll {
height: 100%;
width: 100%;
overflow: scroll;
background-color: black;
}
test2.js
$(document).ready(function() {
// my resolution is 1440x900
alert('innerwidth should be 1425');
// all of these return 1440
alert('body innerwidth: ' + $('body').innerWidth());
alert('document width: ' + $(document).width());
alert('window width: ' + $(window).width());
alert('scroll div innerwidth: ' + $('#scroll').innerWidth());
alert('document.documentElement.clientWidth: ' + document.documentElement.clientWidth);
alert('document.documentElement.scrollWidth: ' + document.documentElement.scrollWidth);
});
だから私はページに1つの要素を持っています...画面全体を占めるdiv、またはスクロールバーを除いた画面全体を占めるべきです。現在、スクロールバーなしでページの幅と高さを取得する方法についてスヌーピングを行ってきましたが、残念ながら、適切な値を返すものはありません...これは、HTMLにボートが欠けていると信じさせますまたはCSS。
私は以下を見ました:
jquery - スクロールバーなしで画面幅を取得する方法は?
スクロールバーなしでブラウザウィンドウのサイズを取得する方法
したがって、表示可能な画面の値からそれぞれのスクロールバーの値を引いた値を返すメソッドが必要です...したがって、スクロールバーの幅は15ピクセルであるため、幅の値は1425である必要があります。それがinnerWidthの仕事だと思っていたのですが、どうやら間違っているのでしょうか?
誰でも洞察を提供できますか?(私は Firefox 24 を実行しています。)
編集
背景を追加するために、空白のページがあります。このページに要素を 1 つずつ追加します。これらの要素のサイズを計算するときは、ページの幅を使用する必要があります。最終的に、このページはスクロールバーが表示されるまで拡大します。そのため、スクロールバーを最初からそこに強制しようとしていますが、どうやら、それでも何もしません。
EDIT2
さらに興味深いことがあります... を実行するdocument.getElementById('scroll').clientWidth
と、適切な innerWidth が得られますが、$('#scroll').width()
orを実行する$('#scroll').innerWidth()
と、両方とも最大解像度が返されます... jQuery のバグのように聞こえます。