1

私は無限スクロールを実装しています。つまり、コンテンツのチャンクをDOMに追加しています(jqueryとjavascriptを介して)。

これをユーザーがスムーズに行えるようにするには、特にユーザーが表示しているものの前にテキストを追加するときに、コンテンツウィンドウを「同じ場所」に保つために手動でスクロールする必要があります。これを実現するには(チャンクを追加してから、追加した正確な量だけコンテンツを下にスクロールします)、追加したコンテンツの高さを判別できる必要があります。これがFirefoxとIEの違いです。Firefoxはこれを正しく処理し、コンテンツ内の正しい場所にスクロールしますが、真の値が約2400ピクセルの場合、IEは高さとして約600ピクセルを報告しています。

var h1 = $(document).height(); //take the height before appending
$('#textChunks').prepend(newContent); // prepend stuff on top
var h2 = $(document).height();//take the height again...
alert(h2-h1);

アラート値はIEでは一貫して間違っており(3倍オフ)、測定方法に関係なく一貫しています(代わりに、DOMにある「newContent」の高さを測定してもIEは間違っていると報告します、しかし一貫して)。.scrollIntoView()などの他の「組み込み」のjavascript関数でさえ、IEではまさにこの量だけずれているようです。

健全性チェックとして、コンテンツのサンプルを使用してデスクトップにスタンドアロンのhtmlファイルを作成できます。この状況では、このファイルが機能します。したがって、問題はページの読み込み後に追加されたコンテンツにのみあるようです。

4

2 に答える 2

1

答えはクァークズモードです!

優れたリファレンス:http ://webdesign.about.com/cs/doctype/a/aaquirksmode.htm

簡単なテストとして、ローカル設定を変更し(IEではF12、次に「ドキュメントモード」をQuirksからIE9標準に変更)、スクロールの問題を修正しました。

doctype宣言がない場合、IEはデフォルトでquirksモードになり、ページの読み込み後にDOMに追加された要素の高さが正しくないことが明らかになり、スクロールの信頼性が低下します。また、フレーム内のフレーム内で作業していたため、コンテンツのDOCTYPEを指定するのに最適な場所はOUTERMOSTフレームでした。

于 2012-09-26T16:05:59.870 に答える
0

HTMLElement.offsetHeightを使用して、任意のHTMLElementの「実際の」高さを取得します。

于 2012-09-25T20:46:24.217 に答える