为什么YUI菜单会等待我的页面图像加载?

时间:2009-01-25 07:55:49

标签: yui yui-menu

编辑:这是jQuery 1.3.1中确认的错误。它在jQuery 1.3.2中修复。


我的YUI菜单控件与this sample完全相同,顶部有子菜单。

我尝试使用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 个答案:

答案 0 :(得分:1)

您是否尝试过使用YUI的onAvailable()而不是onContentReady()?来自YUI's docs

  

onContentReady方法共享一个   与onAvailable相同的语法。该   两者之间的物质差异   方法是onContentReady等待   直到目标元素和它   DOM中的nextSibling响应   的getElementById。这保证了   目标元素的内容将   完全装满了(除了任何   您可能稍后添加的动态内容   通过脚本)。如果onContentReady永远不会   检测到nextSibling,它会触发   window.load事件。

我的猜测是浏览器需要在nextSibling属性工作之前将图像加载到DOM上,因此onContentReady()正在等待它。

答案 1 :(得分:0)

对于jQuery你应该这样做:

    $(document).ready(function(){


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

        oMenuBar.render();
   });

答案 2 :(得分:0)

Yahoo的onContentReady(...)似乎因某种原因等待图片加载,所以我已经停止使用它了。

此外,$(function(){})中似乎存在JQuery错误;作品

请参阅this post,试图了解有关此问题的详细信息。