2011-07-14 8 views
0

私は多くのスクロール可能なdiv(実際にはAceエディタ)のグリッドを持つWebアプリケーションを構築しています。ウィンドウよりも大きい。ユーザーが空の領域をスクロールし始めると、ウィンドウ自体をスクロールさせたい。ユーザーがグリッド要素内でスクロールを開始したときに、そこでdivコンテンツをスクロールするようにします。つまり、ユーザーが空の領域をスクロールしてマウスがグリッド要素に移動するようにスクロールすると、そのスクロール可能なdivはすべてのスクロールイベントをキャプチャし、グリッド上でのユーザーのフローを中断し、グリッド内に「トラップ」します素子。Javascript:カーソルがスクロール可能なdivの上を通過する場合、スクロールウィンドウを停止しない

AFAIKには垂直方向から水平なマウスホイールの動きをキャプチャする方法がないため、手動でonmousewheelイベントをキャプチャすることはできません。Mac OS Xのユーザーはすべての方向にスクロールできるようにします。私は、最初のonscrollイベントで非常に高いz-インデックスを持つ目に見えないdivを追加するためにJSを使用することを考えていました.イベントが特定の期間トリガされなくなるとすぐに削除しました。これをまだコード化していないが、もっと良い解決策があるのか​​、それとも私が考えていない潜在的な落とし穴があるのだろうかと思っている。どんな助けや助言も素晴らしいでしょう!ありがとう!

+0

これは迷惑ですが、回避策ははるかに薄れています。また、IMHOが決して良いことではない標準的な振る舞いを変えます。 – Mrchief

答えて

0

私は、ブラウザのサポートと、おそらくスクロールの計算、divのバックトラック、そしてページへのスクロールの適用のようなものである実際の解決策のため、これに対する解決策は非常に難しいと思います。

あなたこのような何か行うことができます:

$('div').scroll(function(e){ 
    // figure out how much it has scrolled 
    window.scrollBy(0,howmuch); 
}); 

を私も少しもこのソリューションをお勧めしません、私はより良いオプションがオーバーフローするdivを設定することだと思う:隠されました;しっかりとしたスクロールプラグインを手に入れ、それを使ってdivのスクロール動作をカスタマイズします。

関連する問題