24

IE7、IE8、Firefoxのプロパティdocument.body.clientHeightdocument.body.clientWidth戻り値は次のとおりです。

IE 8:

document.body.clientHeight : 704 
document.body.clientWidth  : 1148

IE 7:

document.body.clientHeight : 704 
document.body.clientWidth  : 1132

FireFox:

document.body.clientHeight : 620 
document.body.clientWidth  : 1152

なぜこの不一致が存在するのですか?
jQueryを使用せずに、さまざまなブラウザー(IE8、IE7、Firefox)間で一貫している同等のプロパティはありますか?

4

9 に答える 9

24

Paul A は、矛盾が存在する理由については正しいのですが、Ngm が提供する解決策は (JQuery の意味で) 間違っています。

jquery (1.3) の clientHeight と clientWidth に相当するものは次のとおりです。

$(window).width(), $(window).height()
于 2009-09-15T21:47:40.583 に答える
5

これは、ブラウザのボックスモデルと関係があります。jQueryや別のJavaScript抽象化ライブラリなどを使用して、DOMモデルを正規化します。

于 2009-05-07T09:33:03.227 に答える
5

body要素は、通常はブラウザのビューポートである利用可能な幅を取ります。そのため、ブラウザのクロム境界線、スクロールバー、メニューが占める垂直スペースなどにより、ブラウザごとに異なる寸法になります...

高さもさまざまであるという事実は、高さが通常 body 内の要素に依存するため、css を使用して body/html の高さを 100% に設定したことも示します

css またはそのスタイル プロパティを介してbody要素の幅を固定値に設定しない限り、そのサイズは原則として、ブラウザー/バージョン間で常に異なり、おそらくブラウザーにインストールしたプラグインによっても異なります。そのような場合の定数値は、ルールの例外です...

ブラウザのビューポートの自動幅をとらない他の要素で .clientWidth を呼び出すと、要素の「幅」+「パディング」が常に返されます。したがって、幅が 200 でパディングが 20 の div は clientWidth = 240 (左右に 20 パディング) になります。

ただし、clientWidth を呼び出す主な理由は、結果に予想される矛盾が生じる可能性があるためです。一定の幅が得られ、その値がわかっている場合、 clientWidth を呼び出すのは冗長です...

于 2010-08-03T09:46:37.687 に答える
2

jQuery の offsetHeight と offsetWidth に相当するのは、$(window).width()、$(window).height() です。clientHeight と clientWidth ではありません。

于 2010-02-25T13:03:06.750 に答える
1

clientHeight の問題を解決するために私がしたことは、コントロール firstChild の clientHight を使用することです。データベースからラベルを印刷するために IE 11 を使用していますが、IE 8 で動作していた clientHeight は IE 11 では 0 の高さを返していました。求めていた高さ。したがって、コントロールが 0 の clientSize を返す場合は、その firstChild のプロパティを見てください。それは私を助けました...

于 2015-02-10T19:17:50.920 に答える
0

IEのボックスモデルのバグが原因である可能性があります。これを修正するには、BoxModelHackを使用できます。

于 2009-05-07T09:36:54.637 に答える
0

ブラウザ ウィンドウの詳細情報: http://www.w3schools.com/js/js_window.asp?output=print

于 2013-09-15T05:36:00.310 に答える
0

同様の問題がありました.firefoxはobj.clientHeightの正しい値を返しましたが、そうではありません.0を返しました.obj.offsetHeightに変更しましたが、うまくいきました。つまり、クライアントの高さのためにいくつかの状態があるようです-それはそれを不確かにします...

于 2010-07-04T14:59:43.123 に答える