IE9+、Chrome、および Firefox でうまく機能する jQuery onclick メニューがあります。ただし、IE8では開くのが非常に遅くなります。メニューが表示されるまでに約 10 秒かかり、アニメーションは再生されず、メニューのみが表示されます。
メニューは最新バージョンの jQuery (v1.10.2) を使用し、スライドとアニメーションのみを使用して、メニューのさまざまな部分を開閉します。遅いjQuery、遅い読み込みメニュー、IE8とjQueryの遅いアニメーションのさまざまな組み合わせをグーグルで検索してみましたが、私が抱えている問題のようなものをリモートで見つけることさえできません。
ここにある私のウェブサイトにアクセスすると、問題を確認できます。IE8 でアクセスすると、テスト カテゴリ 1 または 2 をクリックすると速度が非常に遅いことがわかります。
誰もこの種の問題に遭遇したことがありますか? 何が原因で、それを正常に動作させるための解決策を知っている人はいますか?
編集
メニューだけでなく、カルーセルにも影響していることに気付きました。アニメーションを見ると、どちらもスライドしていませんが、IE9 + ではスライドします。この 2 つがリンクされているかどうかはわかりませんが、影響を受けているのが両方の jQuery 効果であることは奇妙に思えます。
編集 2
さらにテストを行った結果、メニューの下部がカルーセルの下のタブの上にある場合、タブの上にある場合は、タブの上のビットがすぐに表示されることに気付きました。メニューを閉じても同じです。タブにカーソルを合わせると、そこに描かれたメニューの一部が消えます。
次に、カルーセルが変わるとメニューが表示されたり消えたりするのを見て気づきました。再描画の問題のようですが、完了時に描画しようとしているコードが機能していないようです。これは、ここで別の回答から取得したコードです(以下の回答のおかげで、jQuery 要素で動作するように少し変更されています)。
function FlushThis(id){
var msie = 'Microsoft Internet Explorer';
var tmp = 0;
//var elementOnShow = document.getElementById(id);
var elementOnShow = $(id);
if(navigator.appName == msie) {
tmp = elementOnShow.parentNode.offsetTop + 'px';
} else {
tmp = elementOnShow.offsetTop;
}
}
再描画する正しい関数を見つけるか、正しい要素でその関数を実行する場合であると思います。現在、クリックされた要素でそれを実行していますが、これは正しい要素ではない可能性があります。メインUL、クリックされた要素、開かれた要素、開かれた要素の親など、さまざまな要素でその関数を実行しようとしました。それらのどれにも運がありません。
JSFiddle:ここで要求されているのは、問題の JSFiddle ですが、IE10でも機能しません。Chromeで問題なく動作します。
編集3:
必要最小限のもの以外はすべて取り除いて、テスト ファイルに入れました。こちらの私のウェブサイトで見ることができます。IE コンソールでも他のコンソールでもエラーは発生しません。メニューが描画されないという同じ問題がまだ発生しています。ただし、その背後に再描画を強制するカルーセルがないため、このテスト サイトには表示されません。
これまでに試した再描画スクリプトはすべて失敗しました。どうすればこれを機能させることができますか?