Mat*_*ell 272 html forms string web-standards
我想知道是否有人可以给出使用空白HTML表单操作回发到当前页面的"最佳实践"响应.
有一篇帖子询问这里有一个空白的HTML表单动作,有些像这样的页面表明它很好,但我想知道人们的想法.
mer*_*tor 264
您可以做的最好的事情是完全忽略action属性.如果您将其删除,表单将提交到文档的地址,即同一页面.
也可以将其留空,任何实现HTML表单提交算法的浏览器都会将其视为与文档地址等效,这主要是因为浏览器当前的工作原理如下:
8.
让action成为提交者元素的动作.
9.
如果action是空字符串,则让action为文档的地址.注意:此步骤是故意违反 RFC 3986,这需要在此处进行基本URL处理.这种违规行为的动机是希望与传统内容兼容.[RFC3986]
这肯定适用于所有当前的浏览器,但在某些旧版浏览器中可能无法正常工作(" 浏览器使用空操作=""属性 " 做奇怪的事情),这就是为什么规范强烈反对作者将其留空的原因:
在
action
与formaction
内容属性,如果指定,必须有一个值是一个有效的非空URL用空格潜在的包围.
der*_*ert 73
实际上,当前HTML5草案的表单提交子部分不允许action=""
.这是违反规范的.
在
action
与formaction
内容属性,如果指定,必须有一个值是一个有效的非空 URL用空格潜在的包围.(重点补充)
mercator的答案中引用的部分是对实现的要求,而不是作者.作者必须遵循作者的要求.引用如何阅读此规范:
特别是,有一致性要求适用于生产者,例如作者及其创建的文档,并且存在适用于消费者的一致性要求,例如Web浏览器.它们可以根据它们的要求来区分:生产者要求允许的是什么,而对消费者的要求说明了软件的行为方式.
HTML4的变化 - 确实允许空URL - 是因为" 浏览器使用空action=""
属性做奇怪的事情 ".考虑到改变的原因,也许最好不要在HTML4中这样做.
小智 17
这将通过HTML5验证.
<form action="#">
Run Code Online (Sandbox Code Playgroud)
Pau*_*tte 16
不包括action属性会打开iframe clickjacking攻击的页面,其中包含几个简单的步骤:
参考
在HTML 5中action=""
不支持所以不要这样做.不好的做法.
如果相反,你完全否定了行动,它将默认提交到同一页面,我相信这是最好的做法:
<form>This will submit to the current page</form>
Run Code Online (Sandbox Code Playgroud)
如果您使用php汇总表单,您可能需要考虑以下内容.在这里阅读更多相关信息.
<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">
Run Code Online (Sandbox Code Playgroud)
或者你也可以使用#
熊,虽然它会像锚一样,滚动到页面顶部.
<form action="#">
Run Code Online (Sandbox Code Playgroud)