表单之外的按钮html标签是否有效?

Chu*_*ckE 35 html forms html5 button

我只注意到,在的SoundCloud,跑道上的"动作"按钮(如,转贴等)都是HTML按钮标签.此外,它们既不在形式内,也不与形式相关联,也不提交表格(它们显然是通过javascript处理的).这是有效的HTML吗?没有表格的按钮是否可以存在?或者这只是使这些按钮成为可点击的div?屏幕阅读器的有效/无效程度如何?

Juk*_*ela 58

一个button元素是文档正文文本地方级标记可能会出现有效的任何地方.这样的元素不需要与元素有任何关系form.当前权威参考是HTML 4.01规范,正式规则在DTD中,但您可以使用快捷方式并使用W3C标记验证器来检查文档是否有效.

如果未与表单关联,则button元素与span元素(与div默认情况下为块级别)没有太大差别,但button具有特殊的默认呈现.浏览器和辅助软件可以button另有特别呢,这是最安全的方法button仅适用于那些应该在点击时触发一些动作元素.相反,这些元素通常最好使用button标记来表示,尽管您也可以通过其他方式创建视觉上类似按钮的元素(主要是图像或CSS).

在表单之外,button元素具有type=button默认值(并且通常type对于它来说通常是唯一合理的).这意味着它只能通过JavaScript产生效果.这不会使它以任何方式无效.但是,您可以考虑通过JavaScript生成这样的按钮,而不是将它们作为静态HTML内容,这样当禁用脚本时,就不会有(有效但是)令人困惑的按钮不执行任何操作.

要在下面的评论中解决澄清问题:

button type=button元素类似于input type=button; 区别在于后者没有内容,但是从value属性中获取按钮中显示的文本,而button内容可以是"丰富的"(带有标记).

对于任一元素,如果使用它们会导致服务器操作(通常通过Ajax调用),那么我们确实可以询问页面如何在禁用JavaScript的情况下工作.但是这个问题可能是无关紧要的(也许页面是一个应该用JavaScript运行的应用程序),并且在任何情况下都没有正式的错误.

它们为什么存在?为了方便作者和遗留原因,我想说.类似地,人们可能会问为什么HTML根本没有事件属性,如果没有客户端脚本就无法工作,并且可以将事件处理程序分配给JavaScript中的元素.但是在早期,这是不可能的,即使在目前,使用button元素或onclick属性比在JavaScript中做事更方便(并且,为了使元素看起来像一个按钮,CSS).还有一点是,buttoninput type=button为元素创建依赖于浏览器的外观,并且可能有人认为,对于大多数用户来说,任何具有浏览器默认样式按钮样式的东西都被视为按钮.


Den*_*ret 5

是.很久以来.

来自whatwg.org:

可以使用此元素的上下文:

在预期措辞内容的地方.

在ajax时代,大多数输入不仅仅是通过提交表单来发送.大多数按钮仅用于在使用可识别的小部件时执行单击操作.

  • 我看不到“喜欢”的按钮在哪里是“文档的文本,以及在段落内标记该文本的元素”。也许只是我。说表单只施加约束基本上是说使用可点击的 div 和 css 来完成这一切也可以。那我们为什么要检查文件的有效性呢? (2认同)