YUI コンテキスト メニューとスクロール可能なテーブルを使用した IE8 と IE9 で奇妙な動作が見られます。次の問題の解決方法を教えていただければ幸いです。
http://jsfiddle.net/nguanon/yL5Sa/ を参照してください.
コードは YUI の例から取得され、次の CSS が追加されています。
table#dataset thead {
display: block;
}
table#dataset tbody {
display: block;
overflow: auto;
max-height: 200px;
}
</style>
<!--[if IE]>
<style>
table#dataset tbody {
position: absolute;
}
</style>
<![endif]-->
YUI 2.6.0 では、一番上にジャンプした後、スクロールバーは (コンテキストメニューを非表示にするために) 他の領域をクリックしたときの場所に戻ります。YUI 2.9.0 では、スクロールバーは一番上にジャンプしてそこにとどまります。どちらの方法でもユーザー エクスペリエンスは良くありません。ジャンプする理由と、それを防ぐことができるかどうかを理解したいと思います。
コンテキスト メニューの setFocus が実行されると、スクロールバーが自動的にジャンプすることをデバッグが示しています。menu.js の実装から、このビューポート ジャンプに関するメモもありますが、タイマーがこの動作を修正したようには見えません。
/* タイマーを介してフォーカスを設定すると、Firefox、IE、および Opera で、メニューの配置とフォーカスを試みるときにブラウザのビューポートがジャンプするという競合状態が修正されます。*/
この問題の解決策を探しているときに、現在のスクロールバーの位置が保存され、後で元の場所に戻します。ただし、ジャンプをまったく防止できるかどうかを確認したかっただけです。これは YUI 固有のものであり、YUI サイトで既に質問されていると思いますが、YUI 2 コードを使用した経験があり、答えを知っている SO ユーザーがいる場合、それは大歓迎です。