0

編集:これは 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 で修正されました。

4

3 に答える 3

1

onContentReady()の代わりにYUIのonAvailable()を使用してみましたか?YUIのドキュメントから:

onContentReadyメソッドは、onAvailableと同じ構文を共有します。2つのメソッドの重要な違いは、onContentReadyは、ターゲット要素とDOM内のnextSiblingの両方がgetElementByIdに応答するまで待機することです。これにより、ターゲット要素のコンテンツが完全に読み込まれることが保証されます(後でスクリプトを介して追加する可能性のある動的コンテンツを除く)。onContentReadyがnextSiblingを検出しない場合、window.loadイベントで起動します。

私の推測では、nextSibling属性が機能する前に、ブラウザーはDOMに画像をロードする必要があるため、onContentReady()はそれを待機しています。

于 2009-01-29T16:40:23.917 に答える
0

Yahoo の onContentReady(...) は、何らかの理由で画像の読み込みを待機しているように見えるので、使用をやめました。

さらに、$(function() { }); の方法に JQuery のバグがあるようです。作品

この問題の詳細を取得しようとしているこの投稿を参照してください。

于 2009-01-25T12:55:53.403 に答える
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 に答える