0

我在 ie6 上使用 jQuery Superfish 菜单,从我的会话的 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 表达式,我猜 IE 很愚蠢,每次 javascript 行为转换元素时都请求一个新的 img。

一个可能的解决方案是确保 javascript 只切换某个类(假设它添加了一个.hover类),然后让 CSS 将背景应用到类选择器上。一个例子:a:hover变成a.hover.

于 2010-10-11T09:48:12.030 回答
0

不确定在 IE6 的上下文中 SuperFish 的细节(它不是已经死了吗? (-; ) 和 jQuery,但“304”是 HTTP 代码,如 404、403 等。304 表示文件没有自上次请求以来已修改。用于缓存,减少对服务器的请求等。

更多关于状态码的信息:

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

当菜单被激活时,IE6 可能正在为此图像发出“GET”请求......?它请求同一个文件 25 次...?用箭头激活第一个子菜单,并计算箭头的数量。然后检查日志。如果日志条目数等于箭头数,您就知道 IE6 在做什么。

于 2010-08-23T16:46:53.493 回答