Grails UI Меню некорректного поведения в IE - PullRequest
0 голосов
/ 03 марта 2010

Я использую GRAILS UI (1.2-SNAPSHOT) и его реализацию меню YUI (YUI 2.7.0.1). Я наблюдаю нестабильное поведение при наведении мыши в IE (Firefox в порядке). Когда я наведу курсор мыши на пункт меню с подменю, он отобразится. Когда я пытаюсь навести указатель мыши на подменю, подменю исчезает, прежде чем я могу щелкнуть. Это происходит по шаблону, который я до конца не выяснил. Обычно в первый раз, когда я выбираю меню, это нормально, но если я перемещаюсь по меню обратно к пункту меню, подменю начинает отображать это поведение. Нажав и удерживая кнопку мыши, я обычно могу получить подменю, чтобы остаться.

Я разбирался с различными конфигурациями, такими как keepopen и automenudisplay, но, похоже, они не меняют поведение. Я не видел много постов об этом. Но я также не вижу меню, задокументированного в плагине пользовательского интерфейса. Я мог бы использовать некоторые отзывы, если меню пользовательского интерфейса еще не готово к прайм-тайму, или я что-то упускаю. Я не много работал с 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>

1 Ответ

0 голосов
/ 04 марта 2010

Я добился определенного прогресса в этом, исследуя библиотеку YUI.Есть задокументированная ошибка с IE7.Видимо, плагин grails-ui не решает проблему.Я тестирую с IE8, но я предполагаю, что он все еще там.

http://developer.yahoo.com/yui/menu/#knownissues

Похоже, вы должны установить свойство zoom в 1 (zoom: 1) для класса bd.Я добавил следующий код в свою таблицу стилей

div.yuimenubar .bd {
zoom: 1;
}

, и это, кажется, помогает.Я не вижу побочных эффектов в Firefox, но я не проверял динамически версию браузера, так как мне нужно было бы взломать код, который генерирует JavaScript для YUI, и вставить

if (YAHOO.env.ua.ie === 7) {
YAHOO.util.Dom.addClass(document.body, "ie7");
}

после вызова render (),Тогда вместо стиля, который я добавил, вы могли бы сделать стиль IE7 (вероятно,> = 7).

Вот что об этом должен сказать сайт Yahoo:

Следующее приложение«zoom: 1» устанавливает свойство «hasLayout» в «true» и предотвращает скрытие подменю первого уровня MenuBar, когда мышь перемещается от элемента в MenuBar к подменю в IE 7. Подробнее об «hasLayout»"свойство: http://msdn.microsoft.com/en-us/library/ms533776(VS.85).aspx

...