0

私はie6でjQuerySuperfishメニューを使用していますが、セッションのApacheログファイルからわかることから、サブメニューのあるSuperfishメニューのメニュー項目にカーソルを合わせると、白いメニュー項目で示されます。メニュー項目ラベルの右側にある矢印の頭の画像では、ログエントリのヒープ全体(たとえば25行)が次のタイプのメッセージとともに吐き出されます。

- - [23/Aug/2010:11:57:45 +1000] "GET /abcprod/images/arrows-ffffff.png HTTP/1.1" 304 - etc…..

また、 304という数字がApacheログのどこを示しているのかわかりません。

これらのタイプのエントリは、サブメニューのあるメニュー項目にカーソルを合わせるたびに表示され続けます。これには、子メニュー項目もあるサブメニュー項目も含まれます。

奇妙なことに、Google Chromeでアプリを実行し、Apacheログでそのセッションを確認すると、arrows-ffffff.png画像に関連するすべてのものが吐き出されます。

ここで、IE6とSuperfishメニューホバーで何が起こっているのでしょうか。

参考までに、クラスf-sub-indicatorに関連するSuperfishユーザーのCSSも含めました。

.sf-sub-indicator {
position:       absolute;
display:        block;
right:          .75em;
top:            1.05em; /* IE6 only */
width:          10px;
height:         10px;
text-indent:    -999em;
overflow:       hidden;
    background:     url("/abcprod/images/arrows-ffffff.png") no-repeat -10px -100px;
}
==>
a > .sf-sub-indicator {  /* give all except IE6 the correct values */
    top:            .8em;
    background-position: 0 -100px; /* use translucent arrow for modern browsers*/
}

/* apply hovers to modern browsers */
a:focus > .sf-sub-indicator,
a:hover > .sf-sub-indicator,
a:active > .sf-sub-indicator,
li:hover > a > .sf-sub-indicator,
li.sfHover > a > .sf-sub-indicator {
    background-position: -10px -100px; /* arrow hovers for modern browsers*/
}
4

2 に答える 2

1

IE6は:hover疑似セレクターをサポートしていないため、superfishはある種のブラウザースニッフィングを使用してIE固有の動作(このようなもの)を適用していると思います。

それに関する問題は、CSSホバールールがjavascript式に変換されるため、JavaScriptの動作が要素を変換するたびにIEが新しいimgを要求するのに十分愚かであると推測しています。

考えられる解決策は、JavaScriptが一部のクラスのみを切り替えるようにして(たとえば、 .hoverクラスを追加する)、CSSにクラスセレクターに背景を適用させることです。例:a:hoverになりa.hoverます。

于 2010-10-11T09:48:12.030 に答える
0

IE6(死んでいるのではないですか?(-;)、jQuery)のコンテキストでのSuperFishの詳細については不明ですが、「304」は404、403などのHTTPコードです。304はファイルに前回のリクエスト以降に変更されています。キャッシュやサーバーへのリクエストの削減などに便利です。

ステータスコードの詳細はこちら:

http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html

メニューがアクティブになっているときに、IE6がこの画像に対して「GET」リクエストを行っている可能性があります...?同じファイルを25回リクエストしています...?矢印で最初のサブメニューをアクティブにし、矢印の数を数えます。次に、ログを確認します。ログエントリの数が矢印の数と等しい場合は、IE6が何をしているのかがわかります。

于 2010-08-23T16:46:53.493 に答える