【问题标题】:Difference between action="" and action="#" in HTMLHTML 中 action="" 和 action="#" 的区别
【发布时间】:2013-12-21 15:13:11
【问题描述】:

我见过两种设置表单动作属性的方法。

#1。一个空的动作属性:

action=""

#2。带有# 的操作属性:

action="#"

两者有什么区别?

【问题讨论】:

    标签: php html forms


    【解决方案1】:

    第一个 ("") 解析为基本 URL,第二个 (#) 解析为文档 URL。

    以下内容完全有效:

    <form action="" method="post">
        <p><input type="submit"/></p>
    </form>
    

    现在请注意,根据HTML4 specificationaction 属性是强制性的,并且它必须包含有效的 URI。但是根据URI RFC,一个空的URI仍然是一个URI:

    不包含 URI 的 URI 引用是对当前文档的引用。换句话说,文档中的空 URI 引用被解释为对该文档开头的引用,而仅包含片段标识符的引用是对该文档的已识别片段的引用。遍历此类引用不应导致额外的检索操作。但是,如果 URI 引用出现在始终旨在导致新请求的上下文中,例如 HTML 的 FORM 元素,则空的 URI 引用表示当前文档的基本 URI,应替换为该 URI当转换为请求时。

    (摘自this page


    虽然它是强制性的,但如果没有指定 action 属性,大多数(如果不是所有)浏览器都会回发给响应的发起者。

    在 HTML5 中,action 属性不是强制性的。来自specs

    action 和 formaction 内容属性,如果指定,其值必须是有效的非空 URL,可能被空格包围。

    相关:

    【讨论】:

    • 你能举个简短的例子吗?
    • @user3110335:什么例子?
    • 从 HTML 5 开始,action 属性是可选的,并且 HTML 5 对在 URI 解析之前启动的 action 属性的空值进行了特殊处理。
    【解决方案2】:

    第一个解析为当前页面的 URL*(保留 URL 中的任何片段标识符,您也可以完全省略 action 属性),另一个解析为页面顶部(删除任何片段已经存在的标识符)。


    * 给定正常的 URL 解析,我认为它会解析为当前页面 URL 中查询字符串和片段 id 之前的最后一个 /,但 HTML 5 special cases empty strings here (step 8)(可能是为了向后兼容,因为大多数浏览器都有历史上是这样实现的)。

    【讨论】:

    • 你能举个简短的例子吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-06-30
    • 1970-01-01
    • 2012-02-08
    • 1970-01-01
    • 2021-03-07
    • 2010-10-20
    • 1970-01-01
    相关资源
    最近更新 更多