Google浏览器正式版刚刚发布, 相信这也是IE Team不想听到的消息, 而与此同时IE 8 Partner Build也对一些特定的人开放测试了, 据微软IE开发团队的陈本峰同学说, 这个Build是狠新的了, 而我作为新时代的白老鼠, 也迫不及待的下载了这些新鲜东西来玩玩.

话入正题, Google浏览器在Beta版的时候相信很多朋友都发现他对ASP.NET的MENU控件兼容性很差, 当时我也没有找到好的方法解决, 而且又是Beta版软件, 所以也还抱着正式版一定会修复这个错误的希望, 而另我失望的是正式版发布了仍然有这个问题, 不知道是不是Google故意的, 没办法, 既然如此, 只好硬着头皮修复了, 首先给大家看看当前不兼容状态的样子:

首先是IE 8 Partner Build:

解决Google浏览器不兼容ASP.NET Menu控件的问题

接着是Google Chrome:

解决Google浏览器不兼容ASP.NET Menu控件的问题

大家看看这菜单都抽抽成什么样子了, 我很郁闷啊.

闲话不多说了, 经过我狂搜了一下, 发现目前只有CSSFriendly才能修复这个问题, CSS Friendly是一个非常不错的开源项目, 也是备受微软官方关注的, 他的主页是: http://www.codeplex.com/cssfriendly .

首先看看其内部自带的代码示例如何, 用VS 2005打开解决方案:

解决Google浏览器不兼容ASP.NET Menu控件的问题

结构简单的项目, 一个是功能, 另一个是演示, 在演示的Web项目中我们能找到一个SampleMenu.aspx的页面, 这个就是我们需要用到的:

解决Google浏览器不兼容ASP.NET Menu控件的问题

看看代码:


唯一特别之处就是使用了一个CssSelectorClass="SimpleEntertainmentMenu" 来加载CSS样式.

接着还要看一个Browser:

解决Google浏览器不兼容ASP.NET Menu控件的问题

内容如下:

 


大家可以看到这个模板中可以让ASP.NET中各种控件重新设定样式, 好了, 到这里我们已经基本了解了CSS Friendly的运作原理, 然后我们来将其移植到我们现有的项目中

首先将Browser移植到网站上:

解决Google浏览器不兼容ASP.NET Menu控件的问题

然后将CSSFriendly的库文件加入到项目引用中:

解决Google浏览器不兼容ASP.NET Menu控件的问题 

 

解决Google浏览器不兼容ASP.NET Menu控件的问题 

接着修改一些Browser的内容, 由于我们这里只需要对MENU控件进行CSS样式的修改, 所以我们将Browser的内容去掉一些, 修改后如下:

 

其实我们就在把ControlAdapters里面的东西移除了, 只留下Menu部分, 原因是如果将所有控件的CSS都重新定义, 工作量太大, 不能及时发布SP1了, 呵呵, 这样我们只要修改Menu的一些样式即可, 如果以后有时间再把其他的加上并且修改.

最后来修改Menu控件的代码, 加入CssSelectorClass="SimpleEntertainmentMenu" 这个属性:

解决Google浏览器不兼容ASP.NET Menu控件的问题

然后修改CSS, 加入如下内容:

 

 

这样我们就可以实现下面效果了:

IE 8:

解决Google浏览器不兼容ASP.NET Menu控件的问题

Google Chrome:

解决Google浏览器不兼容ASP.NET Menu控件的问题

大家也可以访问: http://www.learnmark.com.cn/ 来查看效果

最后非常感谢Google, 让我又学习了点东西.

相关文章:

  • 2021-11-29
  • 2021-12-15
  • 2022-12-23
  • 2022-12-23
  • 2021-06-03
  • 2021-12-12
猜你喜欢
  • 2021-07-30
  • 2021-11-11
  • 2022-12-23
  • 2022-12-23
  • 2021-12-10
  • 2021-08-13
相关资源
相似解决方案