Perché il menu YUI è in attesa del caricamento delle immagini della mia pagina?

StackOverflow https://stackoverflow.com/questions/477348

  •  20-08-2019
  •  | 
  •  

Domanda

Modifica: Questo è un bug confermato in jQuery 1.3.1. È stato risolto in jQuery 1.3.2.


Ho un controllo del menu YUI esattamente come questo esempio con sottomenu nella parte superiore.

Ho provato a usare il codice di Yahoo per inizializzare il menu:

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

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

    oMenuBar.render();
});

Riscontro problemi con le pagine che contengono immagini che richiedono tempo per il caricamento.

Ho notato che i titoli apparivano all'istante (Comunicazione / Shopping / Intrattenimento), ma che le piccole frecce che indicavano che c'erano sotto-elementi non sarebbero apparse fino a quando non fossero state caricate tutte le immagini.

L'ho pensato molto strano. Ho anche provato a cambiare il codice su JQuery per vedere se si sarebbe inizializzato prima che il caricamento delle immagini fosse terminato (ecco cosa $ (function () pensavo dovesse fare).

$(function(){


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

        oMenuBar.render();
});

Con mia grande sorpresa ho avuto ancora lo stesso problema. Il menu non si inizializza fino a quando non viene caricata l'intera pagina.

Sono sicuramente le immagini che si stanno aspettando.

Nota: questo problema è solo in Internet Explorer. Firefox sembra sollevare questo evento onContentReady PRIMA che le immagini vengano caricate.

Posso aggirare questo problema?


Modifica: questo è un bug confermato in jQuery 1.3.1. È stato corretto in jQuery 1.3.2.

È stato utile?

Soluzione 3

OnContentReady di Yahoo (...) sembra attendere il caricamento delle immagini per qualche motivo, quindi ho smesso di usarlo.

Inoltre sembra esserci un bug JQuery su come $ (function () {}); lavori

Vedi questo post da parte mia cercando di ottenere dettagli più specifici sulla questione.

Altri suggerimenti

Hai provato a usare YUI onAvailable () invece di onContentReady ()? Da i documenti di YUI :

  

Il metodo onContentReady condivide un   sintassi identica con onAvailable. Il   differenza materiale tra i due   metodi è che onContentReady attende   fino a quando sia l'elemento target che il suo   nextGemling nel DOM risponde a   getElementById. Questo lo garantisce   sarà il contenuto dell'elemento target   hanno caricato completamente (eccetto qualsiasi   contenuto dinamico che potresti aggiungere in seguito   tramite script). Se onContentReady mai   rileva un prossimo fratello, spara con   l'evento window.load.

Suppongo che il browser debba caricare le immagini sul DOM prima che l'attributo nextSibling funzioni, quindi onContentReady () lo sta aspettando.

per jQuery dovresti farlo:

    $(document).ready(function(){


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

        oMenuBar.render();
   });
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top