<button>标签有什么缺点?

我开始使用诊断CSS样式表,例如http://snipplr.com/view/6770/css-diagnostics--highlight-deprecated-html-with-css--more/

其中一条建议规则突出显示了类型为submit的输入标签,建议使用<button>作为更多语义解决方案。 这对我来说是一个新的标签,你们推荐它,还是存在你遇到的不利因素(比如浏览器兼容性)?

为了清楚起见,我理解<button>的规范,它有一个定义的开始和结束,它可以包含各种元素,而输入是单重态,不能包含东西。 我想知道的基本是它是否坏了。 所以,尽管以前从未使用过它,但我很想开始使用它,但我不知道它在现实世界中的效果如何。 不幸的是,下面的第一个答案似乎暗示它除了形式以外的其他用途都被破坏了。

编辑2015年

景观已经改变! 我现在有6年多处理按钮的经验,浏览器从IE6和IE7有所改变。 所以我会添加一个答案,详细介绍我发现的和我的建议。


从ASP.NET角度回答。

当我发现这个问题和ModernButton控件的一些代码时,我感到非常兴奋,它最终是一个<button>控件。

于是我开始添加各种这些按钮,并在里面装饰着<img />标签,以使它们脱颖而出。 这一切都很好......在Firefox和Chrome中。

然后,我尝试了IE6,并得到了“一个潜在危险的Request.Form值被检测到”,因为IE6提交了按钮内部的html,在我的情况中,它有html标签。 我不想禁用validateRequest标志,因为我喜欢这个额外的数据验证。

所以然后我写了一些JavaScript来禁用该按钮之前提交发生。 在一个测试页面上工作得很好,只需一个按钮,但是当我在一个真正的页面上试用它时,它有另一个<button>标签,它再次爆炸。 因为IE6提交了所有按钮的html。 所以现在我有各种代码来提交之前禁用按钮。

与IE7相同的问题。 幸好IE8修复了这个问题。

让人惊讶。 如果您使用ASP.NET,我建议不要走这条路。

更新:

我发现了一个图书馆,看起来很有希望解决这个问题。

如果您使用此库中的ie8.js脚本:http://code.google.com/p/ie7-js/

它可能会工作得很好。 IE8.js通过带有按钮标签的IE8使IE5-7的速度加快。 它使提交的值成为真正的价值,只有一个按钮被提交。


当使用<button>总是指定类型,因为浏览器默认为不同的类型。

这将在所有浏览器中保持一致:

  • <button type="submit">...</button>
  • <button type="button">...</button>
  • 这样你就获得了<button>的所有优点,没有缺点。


    你需要知道的一切:W3Schools <button>标签

    该标签在所有主流浏览器中均受支持。

    重要提示:如果您在HTML表单中使用按钮元素,不同的浏览器会提交不同的值。 Internet Explorer将在<button></button>标记之间提交文本,而其他浏览器将提交value属性的内容。 使用input元素在HTML表单中创建按钮。

    链接地址: http://www.djcxy.com/p/23019.html

    上一篇: What disadvantages are there to the <button> tag?

    下一篇: disable textbox using jquery?