2010-11-24 11 views
2

に私はすでに次のトピックを見ていない:jqueryの、.height()ページの更新に変更するが、負荷

私が経験してる問題のいくつかの逆バージョンであるように思わ

Jquery Loading problem on first load/hard refresh

。その場合、ハードリフレッシュが問題になります。この場合は解決策です。

さまざまなモニターの高さで動作する複雑なWebアプリケーションUIを設計する際に問題が生じるため、jqueryを使用して高さを変更することにしました。私はもともとパーセンテージの高さを使用していましたが、これらはポイントで大きなギャップをもたらし、最大と最小の高さを使用することは、要素を文脈から引きずるために厄介であることが判明しました。 JavaScriptを有効にしなくても(プログレッシブ・エンハンスメントで構築されていますが)アプリケーションの使用ははるかに遅く、ユーザーはそれをオンにします。これは、CSSソリューションを提案する人のためのものです。あなたがそれを開いている場合は、表示されるはずです - これは、問題は、ページが、それは正しくサイズのハイパーリンクを使ってロードされたときにということであるドメインが有効でなくなった

として削除されましたをテストするための

リンクこれは、黄色/緑色のボックスの下部とブラウザの下部の間に約30ピクセルあります。しかし、それをリフレッシュすると(それを数回リフレッシュする必要があるかもしれません)、黄色のボックスがページの一番下に消え、緑色のボックスが伸びて結合しています。これは私のサーバー上でのみ発生します - 私はこのエラーが発生しないので、私のlocalhost上でそれを開発している間に気づいたことはありません。

jqueryのコードはsandpit1.1webservices.co.uk/ground-control/examples/scripts/jumpers.jsに位置し、特定の抜粋です:

function loadResize() 
{ 
//var window=$(window).height(); 
var window=$('div.main').height(); 
//window=parseInt(window); 
window-=50; 
$('div.staff ul').css('height',window); 
window-=175; 
$('div.loads').css('height',window); 
window-=150; 
$('div.loads div.list').css('height',window); 
} 

あなたは私が持って見ることができますいくつかの点がコメントアウトされており、テストの実際のコードには多くのものがあります。テストの開始時にウインドウの高さが警告されると、ブラウザで885と表示されます(1024pxの画面の高さ)が、1133と1785の間でランダムな値が返されます。 document.readyの最後にあります:

$(window).resize(loadResize); 
loadResize(); 

私は以前はサイズ変更イベントトリガーを持っていましたが、問題の原因となった場合は削除しました。

アイデア?

答えて

11

loadResize()機能を$(document).ready()イベントから$(window).load()イベントに移動することで、この問題を最終的に修正しました。 DOMが構築された後、追加の要素がダウンロードされる前に、ドキュメントの準備ができているので、これは正しいです。この理由から、画像やカスタムフォント(どちらもページ上にあった)などのアイテムは、サイズの計算に影響を与えました。ネットワークスピードとその時にロードされたものに応じて、最初のイベントに対して異なる高さが与えられます。

+2

私は同じ問題がありました。 $(document).ready()は、htmltablecellelementのheightとwidthの値を、console.logに出力するときに、2つの値のセットの間でランダムに変化させます。 $(window).load()に変更すると、値は一定のままです。ありがとう! – Jimbo

+0

TypeKitを使用して同じ問題が発生しました。非同期のフォント読み込みは、特定の状況で要素の高さをわずかに変更する可能性があります。 –

+0

あなたは私のヒーローです –

0

$(function loadresize(){とend}のように記述してください);

関連する問題