Почему YUI Menu ожидает загрузки изображений моей страницы? - PullRequest
0 голосов
/ 25 января 2009

Редактировать: Это подтвержденная ошибка в jQuery 1.3.1. Это исправлено в jQuery 1.3.2.


У меня есть элемент управления меню YUI, точно такой же, как этот образец с подменю в верхней части.

Я пытался использовать код Yahoo для инициализации меню:

YAHOO.util.Event.onContentReady("mnuTopNav", function() {

    var oMenuBar = new YAHOO.widget.MenuBar("mnuTopNav", {
        autosubmenudisplay: true,
        hidedelay: 750,
        lazyload: true
    });

    oMenuBar.render();
});

Я вижу проблемы со страницами с изображениями, для загрузки которых требуется время.

Я заметил, что заголовки появятся сразу (Связь / Покупки / Развлечения), но маленькие стрелки, указывающие на наличие подпунктов, не появятся, пока не будут загружены все изображения.

Я думал, что это очень странно. Я даже попытался переключить код на JQuery, чтобы посмотреть, будет ли он инициализироваться до загрузки изображений (вот что $(function() я думал, что должен был сделать).

$(function(){


        var oMenuBar = new YAHOO.widget.MenuBar("mnuTopNav", {
            autosubmenudisplay: true,
            hidedelay: 750,
            lazyload: true
        });

        oMenuBar.render();
});

К моему изумлению, у меня все еще была та же проблема. Меню не будет инициализироваться, пока не будет загружена вся страница.

Определенно ожидаются изображения.

Примечание: эта проблема только в Internet Explorer. Firefox, кажется, вызывает это событие onContentReady ДО загрузки изображений.

Могу ли я обойти эту проблему?


Редактировать: Это подтвержденная ошибка в jQuery 1.3.1. Это исправлено в jQuery 1.3.2.

Ответы [ 3 ]

1 голос
/ 29 января 2009

Вы пытались использовать YUI onAvailable () вместо onContentReady ()? Из документов YUI :

Метод onContentReady разделяет идентичный синтаксис с onAvailable. материальная разница между двумя методы есть что onContentReady ждет пока как целевой элемент и его nextSibling в DOM ответить на getElementById. Это гарантирует, что содержимое целевого элемента будет загружены полностью (исключая любые динамический контент, который вы можете добавить позже через скрипт). Если onContentReady никогда обнаруживает следующийSibling, он запускается с событие window.load.

Я предполагаю, что браузер должен загрузить изображения в DOM, прежде чем сработает атрибут nextSibling, поэтому onContentReady () ожидает этого.

0 голосов
/ 25 января 2009

Yahoo, onContentReady (...), кажется, по какой-то причине ожидает загрузки изображений, поэтому я перестал использовать это.

Кроме того, похоже на ошибку JQuery в $ (function () {}); работает

См. этот пост мной, пытаясь получить более подробную информацию по этому вопросу.

0 голосов
/ 25 января 2009

для jQuery вы должны сделать это:

    $(document).ready(function(){


        var oMenuBar = new YAHOO.widget.MenuBar("mnuTopNav", {
            autosubmenudisplay: true,
            hidedelay: 750,
            lazyload: true
        });

        oMenuBar.render();
   });
...