type =" hidden"之间的区别并隐藏为属性

时间:2017-05-15 22:54:45

标签: html

我注意到我在网络应用中使用了两种模式,我无法记住他们是如何到达那里的。

一个使用<input ... type="hidden" />传递令牌,其他部分使用<input ... hidden />

我查看了attributetype=的MDN页面,它们看起来完全相同。

我去了this question,它似乎表明hidden属性会隐藏显示,但不会隐藏其他用户输出方法(如屏幕阅读器)。但它没有说明使用type="hidden"

This question讨论了显示和type="hidden",但没有提到其他类型的用户输出方法。

不同的输出设备对这两种处理方式有何不同?表格如何处理不同?他们对DOM或DOM的东西有不同的对待吗?

这两者之间是否存在某些功能差异?是否有一些&#34;最佳实践&#34;区别?一些&#34;预期的方式来做到这一点&#34;差?

2 个答案:

答案 0 :(得分:0)

当您有标记 <input hidden> 时,它实际上是 <input hidden="hidden"> 的快捷方式,这与 <input type="hidden"> 明显不同。

documentation of hidden attribute 将其描述为与属性 style="display:none" 基本相同,但没有明确说明以允许支持属性 hidden 但不支持 CSS 的理论 UA。至少理论上,当 Content-Security-Policy 阻止样式属性工作时,隐藏的属性也可以工作,但据我所知,此细节并未在任何地方定义。

使用属性 hidden="hidden" 隐藏的元素仍然可以提交,因为上面的文档明确说明

<块引用>

隐藏元素不应与非隐藏元素链接,并且 隐藏元素的后代元素仍然处于活动状态, 这意味着脚本元素仍然可以执行和表单元素 仍然可以提交。然而,元素和脚本可能指的是元素 隐藏在其他上下文中。

现实世界的用户代理(例如 Firefox 和 Chrome)可能不会发送具有有效 CSS 样式 display:none 的输入,但这实际上并不是文档中描述的行为。

documentation of input type hidden 明确表示使用此属性会禁止提交该表单元素。

TL;DR:如果您不想提交表单元素,您应该使用 type="hidden",如果您只想隐藏内容,您应该使用 hidden="hidden" 或 CSS 样式来自访客。

答案 1 :(得分:-1)

在某些浏览器中,也使用属性“隐藏”来限制属性“值”中的输入内容,例如,对于iOS的chrome,此限制设置为500ko。 另一个区别是属性“隐藏” is not 100% supported就像今天一样。