0

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


我有一个与此示例完全相同的 YUI 菜单控件,顶部有子菜单。

我尝试使用雅虎的代码来初始化菜单:

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 中得到修复。

4

3 回答 3

1

您是否尝试过使用 YUI 的 onAvailable() 而不是 onContentReady()?来自YUI 的文档

onContentReady 方法与 onAvailable 共享相同的语法。这两种方法的主要区别在于,onContentReady 会等待目标元素及其在 DOM 中的 nextSibling 都响应 getElementById。这保证了目标元素的内容将完全加载(您以后可能通过脚本添加的任何动态内容除外)。如果 onContentReady 从未检测到 nextSibling,它会使用 window.load 事件触发。

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

于 2009-01-29T16:40:23.917 回答
0

对于 jQuery,你应该这样做:

    $(document).ready(function(){


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

        oMenuBar.render();
   });
于 2009-01-25T09:37:45.813 回答
0

雅虎的 onContentReady(...) 似乎出于某种原因等待图像加载,所以我已经停止使用它。

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

请参阅我的这篇文章,以获取有关该问题的更多详细信息。

于 2009-01-25T12:55:53.403 回答