2012-05-02 16 views
0

私には<div>のコンテンツがあります。私はoDIV、これはid属性をDIV与え、この小さなスクリプトを経由してonscrollイベントに関数をバインド:IE6 onscroll glitch

window.onload = { 
    document.getElementById("oDiv").onscroll = function() { 
     document.getElementById("tooltip").className = "sTooltip"; 
     this.onscroll = null; 
    }; 
} 

垂直スクロールバーが表示されますように、私は、div要素にいくつかの簡単なCSSを追加しました。コンテンツはかなり伸びており、スクロールするには多くのことがあります。ユーザーがスクロールしようとした場合

#oDiv { 
    border: 1px solid black; 
    float: left; 
    height: 300px; 
    overflow: auto; 
    overflow-x: hidden; 
    padding: 0; 
    padding-right: 40px; 
    clear: left; 
} 

はとにかく、私は、ツールチップが通じ、彼らはスクロールする必要がものの一部を非表示にするには、フィルタオプションがあることをユーザーに思い出させるために表示します。

Firefoxおよび現在のブラウザではうまくいきました。

問題は私が持っているのはIE6をサポートしなければならないことです。このアプローチはIE6でも機能しますが、少し問題があります。イベントを発生させたときに左クリックしてドラッグしてスクロールバーを「つかむ」とスクロールバーが途中で離されると、ドラッグバーを再度クリックさせる。それは小さな問題ですが、私はなぜそれを知りたいのですか?

このイベントは、スクロールが開始されたときに限り、1回だけ発生します。

ライブラリーまたはフレームワークでこの奇妙な動作が解決された場合は、この問題に対処するソースを示してください。

また、「スクロールを止めた時点」を判断するためのタイミングライブラリなどは、これではやりすぎだと思います。

答えて

1

IEが「ツールチップ」を表示するために一時停止している可能性があります。ツールチップにdisplay:noneを使用する代わりに、visibility:hiddenを使用してからvisibility:visibleに切り替えてみてください。

+0

これをテストしましたが、それでも同じグリッチがありました。しかし、それは私に答えにつながった。 'className'属性を変更すると、一時停止が強制的にレンダリングされます。クラスを再割り当てするのではなく、関数内に 'style.display ="ブロック ";"または 'style.visibility =" visible "; 'を配置することで、私がIE6で経験していた一時停止を削除したようです。 – user17753