0

行や列が追加または削除されると、明らかにサイズが大きくなったり小さくなったりするテーブルを含む DIV があります。これが発生した場合、それに応じてコンテナー DIV のサイズを変更する必要があります。ブラウザーのウィンドウがテーブル全体を表示するのに十分な大きさでない場合、DIV に必要なスクロール バーを含める必要があります。そうでない場合、スクロール バーは表示されません。簡単ですね。

IE 10 では、すべてが期待どおりに機能しますが、Chrome と Safari 2 では、不要な場合でも醜いスクロール バーが表示されます...少なくとも、DIV オブジェクトのプロパティを調べると、これがわかりました。

this.offsetWidth = 642
this.scrollWidth = 638

水平スクロールバーは必要ありませんよね?

this.offsetHeight = 420
this.scrollHeight = 416

垂直スクロールバーは必要ありませんよね?

それでも、両方のスクロールバーが表示されます...ブラウザのウィンドウを最小化してから元に戻すと、ブラウザが後で必要ではないことに気付いたかのように、両方のスクロールバーが消えます。別のアプリケーションに切り替えてからブラウザに戻った場合や、ページの入力フィールドをクリックした場合も同じことが起こります。したがって、これは明らかにバグですが、回避策を見つけることができていません。

私は次のことを試みました:

this.style.overflow = "hidden";
this.style.left = q/2+"px";
this.style.width = v+"px";
this.style.top = p+"px";
this.style.height = i+"px";
this.style.overflow = "auto";

しかし、私はまだ同じ動作をします。

4

1 に答える 1

0

解決しました!!!

それは私の鼻の前にありましたが、気付くのに時間がかかりました:

this.style.overflow = "hidden";
this.style.left = q/2+"px";
this.style.width = v+"px";
this.style.top = p+"px";
this.style.height = i+"px";    
if(this.scrollHeight>this.offsetHeight) this.style.overflowY = "auto";
if(this.scrollWidth>this.offsetWidth) this.style.overflowX = "auto";
于 2013-05-20T17:47:31.013 に答える