Mostrando postagens com marcador X-UA-Compatible. Mostrar todas as postagens
Mostrando postagens com marcador X-UA-Compatible. 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.