posts - 25, comments - 23, trackbacks - 0

My Links

News

Archives

Post Categories

asp:Menu rendering problems in IE8, Safari and Chrome

I was caught off-gaurd today when a user of one my applications reported that the asp:Menu was not rendering properly in her IE browser. I checked the version and it was IE8. I changed the application to compatibility view and the menu rendered just fine.

Since I cannot tell each and every user to view the app in compatibility view when in IE8, i started digging for solutions. It looked like a z-index problem to start with. The problem was that since the new IE8 is moving closer to standards, the z-index value was set to "auto" when not specified. I tried changing it something bigger than its container's z-index value woo-hoo...it worked.

I just added this line in the CSS class definition:

z-index : 100; /* Setting z-index because of an IE8 bug */

Since it is a bug, there are some hotfixes available from MS here.

This problem prompted me to look for rendering in Chrome and Safari also.

The asp:Menu control looks horrible in Chrome. There are no popups, just plain static text. I stumbled upon this thread which discusses this problem. I did not use the method posted in that thread, instead, I used a solution posted by user Mark Perkins which to me looked like the simplest and cleanest solution. Here is what he posted:

Put this piece of code in your Master page code file:

// Adding this override so that the asp:Menu control renders properly in Safari and Chrome
 
    protected override void AddedControl(Control control, int index)
    {
        if (Request.ServerVariables["http_user_agent"].IndexOf("Safari", StringComparison.CurrentCultureIgnoreCase) != -1)
        {
            this.Page.ClientTarget = "uplevel";
        }
        base.AddedControl(control, index);
    }

 

Print | posted on Wednesday, July 08, 2009 9:00 AM | Filed Under [ ASP.NET ]

Feedback

Gravatar

# re: asp:Menu rendering problems in IE8, Safari and Chrome

Thanks! This piece of code finally worked to bring visibility to my menu! I had to add it to my master page code-behind file, like so:

public partial class App_Components_default : System.Web.UI.MasterPage
{
protected override void AddedControl(Control control, int index)
{
if (Request.ServerVariables["http_user_agent"].IndexOf("Safari", StringComparison.CurrentCultureIgnoreCase) != -1)
{
this.Page.ClientTarget = "uplevel";
}
base.AddedControl(control, index);
}
protected void Page_Load(object sender, EventArgs e)
{

}
}
10/2/2009 3:35 PM | Todd Huotari
Gravatar

# re: asp:Menu rendering problems in IE8, Safari and Chrome

Hi, This is a great post, its help me out great. THIS IS TRUSTED ONE POST. Recommended.....
11/2/2009 6:00 PM | Saad
Gravatar

# re: asp:Menu rendering problems in IE8, Safari and Chrome

You are my saviour! Thanks...
11/5/2009 3:20 PM | leonard
Gravatar

# re: asp:Menu rendering problems in IE8, Safari and Chrome

How do you add the code to the "CSS class definition." Sorry I am new to all of this!
11/6/2009 5:32 PM | DBounlom
Gravatar

# re: asp:Menu rendering problems in IE8, Safari and Chrome


*DBounlom
the code is for when you are using asp.net. You can put in the code behind file.
11/6/2009 5:56 PM | Max
Post A Comment
Title:
Name:
Email:
Website:
Comment:
Verification:
 
 

Powered by: