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
Nenhum comentário:
Postar um comentário