Nefunkční MENU v IE8 a Google Chrome   otázka

ASP.NET WebForms

Dobrý den,

4.6.2009 jsem zakládal téma "Navigační MENU", ve kterém jsem žádal o pomoc s chybným zobrazením navigačního MENU v IE8.

Jednalo se o to, že s přechodem na novou verzi IE8 mi přestalo fungovat navigační menu (menu bylo funkční jen na první úrovni, a při rozbalení byly subnabídky prázdné bez pozadí a odkazů). Ukázalo se, že toto téma zajímá více uživatelů, kteří narazili na stejný problém. Následně bylo zjištěno, že při přepnutí do kompatibilního zobrazení prohlížeče vše funguje jak má ...

Jelikož jsem stránky teprve vyvíjel a neplánoval jsem zatím nasazení na server, tak jsem toto téma dočasně opustil s tím, že se k němu vrátím po čase. Po nějaké době jsem zjistil, že se mi najednou menu funguje bez problémů i v nekompatibilním zobrazení, tak jsem předpokládal, že již Microsoft zalepil díru a je po problému.

Bohužel jsem se zmýlil ....

Nyní, kdy už mám stránky umístěné na serveru mě několik klientů upozornilo, že mám na stránkách chybu a nezobrazují se jim položky v menu.

K mému zděšení jsem zjistil, že při vypnutí kompatibilního režimu se skutečně menu nechová jak má.

Tak jsem chvilku testoval a zjistil jsem následující:

1. Pokud vebovou prezentaci spustím z lokálního disku, tek není IE8 problém s menu ani bez kompatibilního zobrazení (pokud není zapnuto kompatibilní zobrazení, tak se mi pouze v jiné velikosti písma zobrazují nadpisy h1 h5 atd.)

2. Pokud stejnou prezentaci spustím ze serveru, tak už je menu v nekompatibilním zobrazení nefunkční a odstavce mají zase jinou velikost písma jako při spuštění z lokálního disku

3. Při zobrazení v Mozzile ze serveru i lokálního počítače je menu vpořádku, akorát je opět změněno písmo u odstavců

4. Při zobrazení v Opeře je to úplně stejné jako v Mozzile

5. Při otevření v Google Chrome je menu nefunkční při spuštění ze serveru i lokálního počítače a písma v odstavcích mají opět jinou velikost (rozdíl je v problému u menu: zde se vůbec menu nerozbaluje, ale teprve po kliknutí se jakoby rozbalí na další úroveň, ale místo horizontálně se rozbalí vertikálně a je z toho úplný nesmysl.

Dokážete prosím někdo poradit co s tím

Zde přikládám ukázky kódu mého menu:

(MasterPage.Master)
<div id="Layer_Menu">
<asp:SiteMapDataSource ID="SiteMapDataSource" runat="server" ShowStartingNode="false" />
<asp:Menu ID="Menu" runat="server" DataSourceID="SiteMapDataSource" Orientation="Horizontal" Width="720px" ></asp:Menu>
</div>

(SkinFile.skin)
<asp:Menu runat="server" 
    StaticMenuItemStyle-CssClass="menuItem"
    StaticHoverStyle-CssClass="menuItemSelected" 
    DynamicMenuItemStyle-CssClass="menuItemDynamic"
    DynamicHoverStyle-CssClass="menuItemSelected" />

(StyleSheet.css)
.menuItem {
	width: 120px;
	height: 20px;
	padding: 0px 0px;
	text-align: center;
    font-family: Verdana, Arial, Helvetica, sans-serif;
    font-size: 10px;
    font-weight:bold;
    color: #000000;

}
.menuItemDynamic {
 	width: 120px;
 	height: 20px;
 	padding: 0px 0px;
 	text-align: center;
 	font-family: Verdana, Arial, Helvetica, sans-serif;
    font-size: 10px;
    font-weight:bold;
    color: #000000;
    background-image: url('StyleImages/menu_bg.png');
}
.menuItemSelected {
	width: 120px;
	height: 20px;
	padding: 0px 0px;
	font-weight:bold;
	text-align: center;
	color: #000000;
	background-image: url('StyleImages/menu_bg_selected.png');
}

Ještě bych rád doplnil, že jsem zkoušel do hlavičky vložit

<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7"/>

nebo jsem odstranil formátování pomocí stylů a menu jsem nastavil přípo přes okno vlastností, ale nic nepomáhá ...

Mockrát děkuji za pomoc pro všechny se stejným problémem

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Pro Chrome je řešení tímto způsobem (ponechávám původní komentář)

Protected Sub Page_PreInit(ByVal sender As Object, ByVal e As EventArgs)
        ' This is necessary because Safari and Chrome browsers don't display the Menu control correctly.
        ' All webpages displaying an ASP.NET menu control must inherit this class.
        If Request.ServerVariables("http_user_agent").IndexOf("Safari", StringComparison.CurrentCultureIgnoreCase) <> -1 Then
            Page.ClientTarget = "uplevel"
        End If
End Sub

Problém s IE8 byl na straně Micosoftu a řešením je stáhnout fix zde:

http://support.microsoft.com/kb/962351

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Dobrý den, děkuji za pomoc, ale jestli to dobře chápu tak tím že stáhnu ten doplněk od Microsoftu tak vyřeším problém se zobrazením ve svém prohlížeči nikoli však v prohlížečích klientů.

Nebo je to jinak ???

Děkuji

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Zkuste použít CSS Friendly Control Adapters, které přepíší standardní renderování komponenty Menu tak, aby byla kompatibilní s nejnovějšími standardy.

nahlásit spamnahlásit spam 2 / 2 odpovědětodpovědět

Vzhledem k tomu, že ten hotfix opravuje soubor Aspnet_wp.exe, řekl bych, že pak po provedení "RebuildPage" ve Visual web studiu bude problém vyřešen. Měl jsem stejný problém asi před měsícem, od té doby mi nikdo o nefunkčním menu nic neříkal, tak snad to tak je.

Opravuji tento příspěvek: Pravděpodobnější je jiná úprava, kterou jsem v té době udělal v Css

 .IE8Fix

         {
             z-index: 100;
         }
                   

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback