IE6和Apache Logs的Superfish悬停问题

时间:2010-08-23 02:27:32

标签: jquery css apache hover superfish

我在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日志中的位置?

每次我将鼠标悬停在带有子菜单的菜单项上时,这些类型的条目都会一直显示,这也包括也有子菜单项的子菜单项。

奇怪的是,当通过谷歌浏览器运行应用程序并在Apache日志中检查该会话时,它确实吐出了与arrows-ffffff.png图像相关的任何内容。

ie6与Superfish菜单悬停一起发生了什么?

仅供参考,我还包括了关于类f-sub指标的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*/
}

2 个答案:

答案 0 :(得分:1)

由于IE6不支持:hover 伪选择器,我猜测superfish使用某种浏览器嗅探来应用特定于IE的行为(类似于this)。

问题在于,因为CSS悬停规则被转换为javascript表达式,我猜每次javascript行为转换元素时,IE傻到足以请求新的img。

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

答案 1 :(得分:0)

在IE6的上下文中不确定SuperFish的细节(不是它死了吗?( - ;)和jQuery,但是“304”是像404,403等的HTTP代码。一个304意味着自上次请求文件以来,文件尚未被修改。为缓存,减少对服务器的请求等提供了便利。

此处有关于状态代码的更多信息:

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

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