http://snipplr.com/view/6770/css-diagnostics–highlight-deprecated-html-with-css–more/
其中一条建议规则突出显示了提交类型的输入标签,并建议使用< button>作为更多的语义解决方案。这是一个新的标签给我,你们推荐它,还是有缺点(如浏览器兼容性),你已经运行?
为了清楚,我理解< button>的规范,它有一个定义的开始和结束,它可以包含各种元素,而输入是一个单线态,不能包含东西。我想知道的基本上是它是破碎还是不破碎。所以尽管从来没有使用它,我很想开始使用它,我只是不知道它在现实世界中是如何工作。下面的第一个答案似乎暗示,它是破坏的使用,除了外面的形式,不幸的是。
编辑2015年
景观已经改变!我有6年以上的处理按钮的经验,现在的浏览器有点移动从IE6和IE7。所以我会添加一个答案,详细我发现了什么,我建议。
解决方法
我很兴奋,当我发现this question和一些ModernButton控件的一些代码,这到底是一个< button>控制。
所以我开始添加各种这些按钮,用< img />标签里面,使他们脱颖而出。它一切工作伟大…在Firefox和Chrome。
然后我试过IE6并得到“一个潜在危险的Request.Form值被检测到”,因为IE6提交的html里面的按钮,在我的情况下,有html标签。我不想禁用validateRequest标志,因为我喜欢这个添加位的数据验证。
所以,然后我写了一些javascript来禁用该按钮之前提交发生。在测试页中工作得很出色,只有一个按钮,但是当我在实际页面上尝试时,其他< button>标签,它再次爆炸。因为IE6提交了所有的按钮的html。所以现在我有各种代码在提交前禁用按钮。
与IE7相同的问题。幸好有这个固定的。
Yikes。我建议不要走这条路如果你使用ASP.NET。
更新:
我发现一个图书馆,看起来很有希望解决这个问题。
如果您使用此库中的ie8.js脚本:http://code.google.com/p/ie7-js/
它可能工作得很好。 IE8.js带来IE5-7加速与IE8与按钮标签。它使提交的值是真正的值,只有一个按钮被提交。