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:
protected void Page_PreInit(object sender, EventArgs e)
{
if (Page.Request.ServerVariables["http_user_agent"].ToLower().Contains("safari"))
{
Page.ClientTarget = "uplevel";
}
}
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.
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