我刚刚发现(困难的方法),当你有一个HTML表单时action="",Webkit浏览器会以不同的方式对待Firefox和Internet Explorer.
action=""
在FF和IE中,这两个表单标签是等效的:
他们都会将表格提交回同一页面.然而,Safari和Chrome会将第一个表单发送到默认页面(index.php或其他) - 第二个表单与FF/IE的工作方式相同.
我很快就破解了我的代码,以便在通常打印空操作的任何地方,它根本不添加动作属性.
这看起来非常混乱,而不是做事的最佳方式.有谁能建议更好的方法?另外,任何人都可以告诉我为什么Webkit会做这样的事情?
我经常使用
这意味着当前的URL但没有参数.
该action属性是必需的,但您可以指定引用当前URI的空URI引用:
action
编辑 确定,当使用元素将空URI与指定的基URI一起使用时,这实际上是WebKit 528+(参见Bug 19884)的归档错误BASE.在这种情况下,WebKit采用基URI而不是从基URI解析空URI.
BASE
但根据RFC 3986,这是正确的行为:
5.1.建立基本URI 术语"相对"意味着存在"基本URI",应用相对引用.[...] 可以以下面按优先顺序讨论的四种方式之一建立引用的基URI.可以根据层来考虑优先顺序,其中最内层定义的基URI具有最高优先级.这可以通过图形方式显示如下: .----------------------------------------------------------. | .----------------------------------------------------. | | | .----------------------------------------------. | | | | | .----------------------------------------. | | | | | | | .----------------------------------. | | | | | | | | | | | | | | | | | | `----------------------------------' | | | | | | | | (5.1.1) Base URI embedded in content | | | | | | | `----------------------------------------' | | | | | | (5.1.2) Base URI of the encapsulating entity | | | | | | (message, representation, or none) | | | | | `----------------------------------------------' | | | | (5.1.3) URI used to retrieve the entity | | | `----------------------------------------------------' | | (5.1.4) Default Base URI (application-dependent) | `----------------------------------------------------------'
5.1.建立基本URI
术语"相对"意味着存在"基本URI",应用相对引用.[...]
可以以下面按优先顺序讨论的四种方式之一建立引用的基URI.可以根据层来考虑优先顺序,其中最内层定义的基URI具有最高优先级.这可以通过图形方式显示如下:
.----------------------------------------------------------. | .----------------------------------------------------. | | | .----------------------------------------------. | | | | | .----------------------------------------. | | | | | | | .----------------------------------. | | | | | | | | | | | | | | | | | | `----------------------------------' | | | | | | | | (5.1.1) Base URI embedded in content | | | | | | | `----------------------------------------' | | | | | | (5.1.2) Base URI of the encapsulating entity | | | | | | (message, representation, or none) | | | | | `----------------------------------------------' | | | | (5.1.3) URI used to retrieve the entity | | | `----------------------------------------------------' | | (5.1.4) Default Base URI (application-dependent) | `----------------------------------------------------------'
在这种情况下,BASE具有href属性的元素是嵌入在内容中的基本URI.和嵌入在内容基础URI具有更高的优先级比URI用于检索实体.因此,根据RFC 3986,WebKit的行为实际上是预期的行为.
href
但是在HTML 5中,form'saction(仍然是草稿)中的空URI的这种行为与RFC 3986不同:
form
如果action是空字符串,则让action为文档的地址. 注意:此步骤是故意违反 RFC 3986,这需要在此处进行基本URL处理.这种违规行为的动机是希望与传统内容兼容.[RFC3986]
如果action是空字符串,则让action为文档的地址.
注意:此步骤是故意违反 RFC 3986,这需要在此处进行基本URL处理.这种违规行为的动机是希望与传统内容兼容.[RFC3986]
坦率地说,源代码中此注释后的HTML注释如下:
所以这是一个源自Internet Explorer的bug,它成为事实上的标准.
我认为最好的方法是不要省略action属性(不会验证),而是指定表单的实际操作.您是否有理由不指定行动?