Menu do asp.net não funciona no Google Chrome nem no Safari 4


Este erro, ao contrário do que os outros pensam, não é do Chrome ou do Safari e sim do próprio ASP.NET.

Para gerar o código JavaScript do menu, o ASP.NET verifica qual é o browser do cliente, e se ele suporta ou não JavaScript. Acontece que esta verificação falha em alguns browsers como o Sarafi e consequentemente o Chrome (pois o Chrome foi baseado no Safari), e o  ASP.NET então devolve um código que não funciona. Para corrigir isto devemos “forçar” o ASP.NET a executar o JavaScript, para isto setamos a propriedade Page.ClientTarget com o valor “uplevel”. Assim informamos que o cliente possui um moderno “uplevel” browser.

Devemos fazer isto para todas as páginas que utilizarão o menu. O código deverá estar dentro do evento Page_Init da página. Ex:

Neste código, fazemos uma verificação se o user_agent possui a palavra safari, que servirá também pro chrome  e, se sim, forçamos o uplevel.

Para evitar de “copiar” e “colar” o mesmo código em todas as páginas, você poderá aproveitar o que há de melhor da programação orienteda a objetos, a herânça. Para isto crie uma classe herdando de System.Web.UI.Page e coloque este código nela. Para todas as suas páginas, ao invés de herdar diretamente de System.Web.UI.Page, você herda da classe que acabou de criar.

Related Posts Plugin for WordPress, Blogger...
  • Parabéns Marcus, gostei muito desse artigo!
    Eu vinha procurando uma solução a tempos para o menu do ASP.NET que não funcionava corretamente no Chrome e no Safari. A única que achei foi utilizar o CSS Friendly.

    Abraço e sucesso

  • Parabéns Marcus, no Safari e no Chrome teu método funciona que é uma beleza !

    Agora no Internet Explorer 8 o menu pull down do asp.net vira uma caixa branca, vc sabe como solucionar este xabu ?

    flw

  • 5

  • Parabéns pela matéria, resolveu um problemão aqui.
    Com relação à pergunta do Guilherme, dá uma olhada nesse link, me resolveu demais:

    http://www.bufaloinfo.com.br/ExibeNoticias.aspx?entryid=893827425787204357