我正在使用GRAILS UI(1.2-SNAPSHOT)和它的YUI菜单栏(YUI 2.7.0.1)的实现。我在IE中看到了flakey mouseover行为(Firefox还可以)。当我将鼠标悬停在带有子菜单的菜单项上时,它将显示。当我尝试将鼠标放在子菜单上时,子菜单会在我点击之前消失。这种情况发生在我尚未完全弄清楚的模式中。通常我第一次选择一个菜单就没问题但是如果我在菜单中移动回菜单项,子菜单就会开始显示这种行为。通过单击并按住鼠标按钮,我通常可以使用子菜单。
我已经使用了各种配置,例如keepopen和automenudisplay,但它们似乎并未改变行为。我没有看到太多关于此的帖子。但我也没有看到UI插件中记录的菜单。如果UI菜单尚未准备好进入黄金时段,或者我遗漏了其他内容,我真的可以使用一些反馈。我之前没有使用过很多AJAX。
以下是我玩过的附加选项的代码,但没有产生积极的影响。
<gui:menubar id='menubar' renderTo='mainmenu' autosubmenudisplay="false" shadow="true" keepopen="true">
<gui:menuitem url="/esmzone">Home</gui:menuitem>
<gui:submenu label='Profile'>
<gui:menuitem url="${createLink(controller:'memberProfile', action:'view')}">View</gui:menuitem>
<gui:menuitem url="${createLink(controller:'memberProfile', action:'profile')}">Edit</gui:menuitem>
<gui:menuitem url="${createLink(controller:'user', action:'account')}">Settings</gui:menuitem>
<gui:menuitem url="#">Subscription</gui:menuitem>
</gui:submenu>
以下是插件生成的代码:
<script>
YAHOO.util.Event.onDOMReady(function() {
GRAILSUI.menubar = new YAHOO.widget.MenuBar("menubar_div", {'autosubmenudisplay': false,
'shadow': true,
'keepopen': true});
GRAILSUI.menubar.render('mainmenu');
});
</script>
答案 0 :(得分:0)
通过研究YUI库,我在这方面取得了一些进展。 IE7存在文档错误。显然grails-ui插件没有解决这个问题。我正在测试IE8,但我认为它仍在那里。
http://developer.yahoo.com/yui/menu/#knownissues
您似乎应该为bd类将zoom属性设置为1(zoom:1)。 我将以下代码添加到我的样式表
div.yuimenubar .bd {
zoom: 1;
}
似乎有所帮助。我认为在Firefox中没有任何副作用,但我没有动态检查浏览器的版本,因为我需要破解生成YUI javascript并放入的代码
if (YAHOO.env.ua.ie === 7) {
YAHOO.util.Dom.addClass(document.body, "ie7");
}
在render()调用之后。然后,而不是我添加的样式,你可以做一个IE7(可能是&gt; = 7)样式。
这是雅虎网站不得不说的:
以下申请 “zoom:1”设置“hasLayout” 属性为“真实”并阻止 MenuBar的第一层子菜单 从鼠标移动时隐藏 从MenuBar中的项目到 IE 7中的子菜单。 有关“hasLayout”属性的更多信息: http://msdn.microsoft.com/en-us/library/ms533776(VS.85).aspx