これが私の現在の状況です:
いくつかのスクロール可能な div を含む Web ページがあります。これらの各 div には、多数のオブジェクトが含まれています。YUI を使用して、各オブジェクトで実行できるアクションのポップアップ メニューを表示しています。各オブジェクトには、動的に構築および表示される独自のメニューが関連付けられています。ポップアップ メニューは大きくなる可能性があり、スクロール可能な div の境界に重なる可能性があります。
フォーカスの問題 (メニューにアクセスできる必要があります) から、スクロール可能な div の端にあるアクションの上にマウスを置くと、div が自動的にスクロールし、コンテンツは移動しますが、メニューは静止したままになります。これが発生したときにメニューを動的に移動しようとすることは、ユーザー エクスペリエンスが低下すると思われるため、私がやりたいことではありません。
したがって、このフォーカスされたメニューが div をスクロールしないようにする必要があります。最良のユーザー インターフェイスを提供するための私の考えは、メニューが開いているときにこれらの内部 div がスクロールしないようにすることです。これにより、メニューが最適な位置に配置され、どのアイテムが操作されているかをユーザーに示すことができます。ユーザーがボックスをスクロールしたい場合は、クリックしてメニューを閉じてから、通常どおりスクロールできます。
これどうやってするの?主要なブラウザーで動作するソリューションが必要です。
私が最初に考えたのは、その特定の要素のonscrollイベントをリッスンすることでした。残念ながら、そこからスクロールが起こらないようにする簡単な方法はないようです。1 つには、実際のスクロールが発生した後に、私の Javascript イベント コードが実行されているように見えます。
次に、オブジェクトがスクロールした後にコードが実行されるため、obj.scrollTopとobj.scrollLeftをリセットするだけでよいと考えました。案の定、これは機能しているように見えますが、遅いブラウザーでは、ユーザーが div 内のコンテンツを「飛び回る」ように見えるのではないかと心配しています。また、要素のスクロール量がイベント オブジェクトの一部であると、非常に便利です。どこかに引っかかってませんか?この要素の scrollTop 変数と scrollLeft 変数を保存し、スクロールが一時的に無効になっている間にそれらを使用する代わりの方法を探しています。
この問題全体を解決する最善の方法は何ですか?