Mostrando postagens com marcador IE8. Mostrar todas as postagens
Mostrando postagens com marcador IE8. Mostrar todas as postagens

sexta-feira, 8 de maio de 2009

Mais sobre meta tag IE8: App_Themes

Após o meu post anterior sobre a tag X-UA-Compatible do IE8 comecei a verificar que em algumas páginas o comportamento era igual ao de uma página que não teria a tag. Vendo um pouco mais além, verifiquei que em algumas páginas o ASP.NET colocou duas tags antes da tag tag X-UA-Compatible. Elas são justamente as tags dos arquivos do App_Themes que são colocados antes do PreRenderComplete. Para contornar este problema é necessário que a tag tag X-UA-Compatible seja removida de onde está e colocado como primeira tag dentro do Head. Primeiro temos que criar em cada página o evento PreRenderComplete. Pra evitar de fazermos em cada uma das páginas manualmente podemos adicionar este evento a página no arquivo Global.asax conforme abaixo:

protected void Application_PreRequestHandlerExecute(object sender, EventArgs e)

{

 Page p = this.Context.Handler as Page;

 if (p != null)

 {

  p.PreRenderComplete += new EventHandler(p_PreRenderComplete);

 }

}

Após isto criamos este novo evento que buscará o header da página, tentará encontrar o tag que precisamos, removerá de onde estiver e colocará como primeiro elemento. Segue o código abaixo:

protected void p_PreRenderComplete(object sender, EventArgs e)

{

 Page page = sender as Page;

 if (page.Header != null)

 {

  var ctrl = page.Header.Controls.Cast<Control>().FirstOrDefault(

   c => c is HtmlMeta && ((HtmlMeta)c).HttpEquiv == "X-UA-Compatible");

 

  if (ctrl != null)

  {

   page.Header.Controls.Remove(ctrl);

   page.Header.Controls.AddAt(0, ctrl);

  }

 }  

}

Senão ficou bem formatado é porque usei a funcionalidade de postagem por e-mail do Blogger, que pode não ser 100% igual ao post normal. Enjoy

sábado, 28 de março de 2009

compatibilidade do IE8

Como informado no meu post anterior o IE8 é o browser da Microsoft que mais segue as recomendações do W3C. Mais aí fica a pergunta. Como ele sabe em qual modo deve funcionar para cada caso? Pois bem, o time do Internet Explorer pensou nisso e criu uma nova meta tag para nos ajudar: <meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7"/> Esta tag diz ao IE8 que deve interpretar o site com o modo de compatibilidade para IE7, mas semelhante ao IE7. Isso pode resolver vários problemas com sites desenvolvidos para IE6 e que no IE8 aparecem com vários problemas, principalmente de layout. Seque aqui o artigo completo sobre esta tag, suas variações e alternativas. Edit:------- Só pra complementar, esta tem que ser a primeira tag dentro do HEAD, caso contrário não funcionará. Outras opções importantes para a tag são IE=7 e IE=8.

quarta-feira, 25 de março de 2009

IE8 x Acid2 & Acid3

Fiquei um pouco inconformado com a notícia de um colega de que o IE8 não passou no testes Acid2 e Acid3. Achei esquisito ficar tão parecido com o IE7 e fui atrás da história. Pois bem, o grande problema é que sempre foi do conhecido dos desenvolvedores do mundo todo que o IE6 foi o browser mais utilizado. E no mundo todo aconteceu a mesma coisa, ao invés dos desenvolvedores programarem nos padrões do W3C preferiram programar nos padrões do IE6, pois assim atingiriam uma fatia absurdamente maior de mercado, se fisessem pelos Web Standarts teriam vários problemas.
No IE7 já tentou-se colocar um pouco de padronização do W3C, mas ainda não era o foco da Microsoft para o browser. Com a chegada do IE8 a Microsoft parou e disse: "Chega do legado, vamos seguir o W3C". Me parece que foi exatamente o que aconteceu, o IE8 foi anunciado como o primeiro browser da Microsoft feito dentro dos Web Standarts. Mas ao que parece a solução, iniciasse o problema. E como fazer com que todos os milhares, senão milhões de sites que foram feitos especificamente para IE6 continuarem funcionando? Não podiam ser abandonados. Nesse momentos colocou-se no IE8 os modos de compactibilidade, uma para IE8 (que segue os últimos padrões W3C), um IE7 (com as semelhanças do IE7) e o lixo do universo conhecido como Quirks Mode, onde o browser faz a droga toda acontecer fazendo parse de estilhos semelhantes ao IE6. Depois de tudo isso fui procurar porque o IE8 não passava nos Acid. Primeiro cliquei no F12 e ví o modo que estava meu IE8. Para a minha surpresa não estava no modo mais avançado. Pois bem, troquei para Browser Mode IE8 e DocumentMode IE8 Stardats e voila, o Acid2 passou com perfeição (como mostra a imagem). Logo após fui para o Acid3, mas para a minha surpresa ví que não passou, e ficou ainda pior. Então fui atras do motivo. Primeiramente testei o próprio teste do Acid3 no validador do W3C e para a minha surpresa ele não passa no teste de CSS 2.0. Achei estranho e fui atrás novamente e descobri que os testes de Acid são feitos com base nas recomendações do W3C mais os Drafts standarts, que são os rascunhos que ainda não se sabe como vão ficar. IE8 Does Not Pass Acid3 Because Standards Not Official Pude comprovar nas minhas andanças que o IE8 já é compactível com CANVAS também. Enjoy