2011-01-01 24 views
2

私はiframeでホストされているWebページを持っています。私はこのページだけを変更でき、含まれているページは変更できません。Firefoxのiframeスクロールの問題

デフォルトでは、ページのスクロールバーは無効になっていますが、ページのサイズが一定のしきい値を超えている場合は、垂直スクロールバーをオンにする必要があります。次のコードは、すべてのブラウザで動作するようですが、Firefoxの:

function getDocHeight() { 
    var D = document; 
    return Math.max(
     Math.max(D.body.scrollHeight, D.documentElement.scrollHeight), 
     Math.max(D.body.offsetHeight, D.documentElement.offsetHeight), 
     Math.max(D.body.clientHeight, D.documentElement.clientHeight) 
    ); 
} 

function setScrollbar() { 
    if (getDocHeight() > 5000) { 
     pageBody.style.overflow = 'scroll'; 
    } 
} 

ここでは私のHTMLです:

<html xmlns="http://www.w3.org/1999/xhtml" > 
    <head><title>My title</title></head> 
    <body id="pageBody" onload="setScrollbar();"> 
    </body> 
</html> 

Firefoxはstyle.overflow = 'スクロール' を無視しているようです。私は検索の良いビットをやったし、私は解決策を見つけるように見えることができません。何か案は?

答えて

0

この置き換えてください。これで

pageBody.style.overflow = 'scroll'; 

:私はFFで、あなたのコードをチェックしたとき

document.getElementById('pageBody').style.overflow = 'scroll'; 

私はJSエラーpageBodyを得ていた問題を解決しなければならないこと、未定義です:)

乾杯

G.

0

style.overflow = 'auto'はうまくいくはずです。スクロールバー自体をいつ追加するかをブラウザが決定します。

0

残念なことに、Firefoxはフレーム上のオーバーフロースタイルに基づいてフレームの本文にスクロールバーを表示します。したがって、最も簡単な方法は、100%サイズのボーダレススクロール可能なサブフレームを挿入し、その代わりに実際のコンテンツをロードすることです。

あなたがそれを行うにはしたくない場合は、あなたがこのようなネストされたdiv要素と周り混乱することができます:

<body style="margin: 0px;"> <!-- override default body margin --> 
    <div style="height: 100%; overflow: auto;"> <!-- The actual scrollable area --> 
    <div style="margin: 8px;"> <!-- to emulate default body margin --> 
     <!-- Content goes here --> 
    </div> 
    </div> 
</body>