当前位置:  开发笔记 > 编程语言 > 正文

asp.net菜单控件在safari中无法正确呈现

如何解决《asp.net菜单控件在safari中无法正确呈现》经验,为你挑选了4个好方法。

我正在使用的网站是使用Databound asp:Menu控件.当发送1个菜单项时,它会在Firefox(和IE)中呈现完全正确的HTML,但实际上在Safari和Chrome中搞砸了代码.下面是发送到每个浏览器的代码.我已经测试了几个浏览器,它们都是非常类似的渲染,所以我只在渲染源上发布了两个变体.

我的问题是:如何让ASP.NET向Chrome和Safari发送与Firefox和IE相同的html和javascript?



    
        
    
    
    
    
    
    




My Order
Expand My Order
My Order Expand My Order

更新:我的解决方案帖子是正确的..但我无法将自己标记为正确...所以如果有人想要复制它,那么我可以关闭它.:)



1> stephenbayer..:

我从weblogs.asp.net的评论中找到了这个解决方案.它可能是一个黑客,但它确实有效.

这种跨浏览器兼容性的斗争正在变得令人沮丧.

 if (Request.UserAgent.IndexOf("AppleWebKit") > 0)
    {

        Request.Browser.Adapters.Clear();

    }

如果有人有一个更好的解决方案,而不是一个黑客,我会很高兴你发布它.从我广泛的网络搜索,看起来我并不是唯一一个菜单控件的问题,所以一些好的参考将帮助其他人在相同的情况下.



2> Keltex..:

我遇到了asp:menu控件和webkit的问题.而且很难按照我想要的方式设计风格.我的建议是使用CSS友好控制适配器:

http://www.asp.net/cssadapters/

http://www.asp.net/CSSAdapters/Menu.aspx

这将菜单表转换为更现代和SEO友好的标记.您的菜单看起来更像是这样的:


在我的测试中,标记在所有浏览器中都是相同的.



3> Seth Reno..:

如果您有多个网络应用,这是解决chrome和safari问题的最简单方法:

在"%SystemRoot%\ Microsoft.NET\Framework [version]\CONFIG\Browsers"中创建一个名为safari.browser的文件,其中包含以下内容:


    
        
            
        
    

这将告诉asp.net在渲染safari的菜单控件时不要使用适配器.Safari1Plus定义在同一目录中的mozilla.browser文件的末尾.这也适用于chrome,因为它们都使用webkit,这就是asp.net识别Safari1Plus的方式.

接下来运行%SystemRoot%\ Microsoft.NET\Framework [version]\aspnet_regbrowsers -i

这会将所有浏览器文件编译成程序集并将其添加到GAC.

现在asp.net菜单将在safari和chrome中正确呈现.

或者,您可以在每个Web应用程序中添加App_Browsers目录的文件.



4> 小智..:

我只是想提交一个替代选项.这适用于ASP.NET 3.5.

将"App_Browsers"ASP.NET文件夹添加到项目中

在此文件夹中创建一个浏览器文件

在浏览器文件中,在标记之间添加以下代码:





这应该在Chrome/Safari中正确呈现菜单控件.

推荐阅读
大大炮
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有