我只注意到,在的SoundCloud,跑道上的“动作”按钮(如,转贴等)都是HTML按钮标签。 此外,它们既不是表单内也不它们结合的形式的拉HTML5也不提交表单(他们显然正在通过JavaScript的处理)。 这是有效的HTML? 一个按钮可以在没有形式存在? 或者这是否只是让这些按钮纯点击的div? 和/ unvalid如何有效的将是对屏幕阅读?
Answer 1:
一个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) 。 另外还有一点一点button
和input type=button
创建要素依赖于浏览器的外观,和它可能会争辩说,对于大多数用户来说,任何有对他的按钮浏览器的默认样式风格被认为是一个按钮。
Answer 2:
是。 由于很长一段时间。
从whatwg.org :
上下文在此元件可用于:
凡措辞内容的预期。
在阿贾克斯时代,最投入的不仅仅是提交表单发送。 而大多数按钮都只是用来在使用一个可识别的小工具来执行的点击操作。