Marco Rizzi SPBlog

SharePoint, web and so many things.

IE8 e SharePoint:ASPMenu

Ormai è da qualche tempo che ho installato IE8 ma tra le varie beta pensavo che il comportamente errato relativamente ai menu dinamici di SharePoint fosse essenzialmente un baco del browser e che prima del rilascio della RC venisse fissato, invece niente.

Oggi ho avuto sono riuscito a ritagliarmi un pò di tempo per approfondire il comportamento e trovare il perchè dell’anomalia. Una volta individuato ciò, sarebbe stato possibile correggere il comportamento magari anche con poche linee di codice.

Ma di cosa sto parlando nel dettaglio:
il controllo SharePoint:ASPMenu, che si basa su asp:menu, se configurato opportunamente ha la possibilità di visualizzare menù su più livelli dinamicamente. Selezionando una voce di menù, il controllo genera un ‘tabella’ delle voci di menù del livello inferiore via javascript chiamando la funzione PopOut_Show che viene inclusa automaticamente nella pagina. Tale funzione effettua delle operazioni di verifica e assegnazione della proprietà z-index presente sul panel del menu. Il valore dello z-index viene calcolato differentemente sulla base del browser e non della versione dello stesso (non avviene nessun controllo sulla versione di IE). Per IE assume che la proprietà element.currentStyle.zIndex restituisca una valore numerico, ma in realtà per IE8 in valore restituito è ‘auto’ e ciò genera l’anomalia.

Dopo alcune prove e leggendo su google ho trovato per risolvere la issue basta definire una nuova classe css che contiene un z-index numerico e assegnare questa classe allo style dinamico del menù.

In breve:

adjustedMenu {
    z-index: 99;
}

e

<asp:Menu ID="Menu1" runat="server">
    <DynamicMenuStyle CssClass="adjustedMenu " />
</asp:Menu>

Applicando queste modifiche sono riuscito a visualizzare di nuovo il menù anche su IE8.

Segnalo alcuni interessanti link che ho trovato navigando:

  • Bertrand Le Roy qui descrive il problema e spiega perchè non sia una issue di IE.
  • Microsoft dovrebbe a breve rilasciare anche una fix (KB962351) che per il momento non è ancora pubblica ma a questo link su può già scaricare qualcosa in anteprima.

UPDATE: è stato scritto un KB http://support.microsoft.com/kb/962351 che permette di scaricare una fix