当前位置:  开发笔记 > 编程语言 > 正文

表格有动作=""

如何解决《表格有动作=""》经验,为你挑选了3个好方法。

我刚刚发现(困难的方法),当你有一个HTML表单时action="",Webkit浏览器会以不同的方式对待Firefox和Internet Explorer.

在FF和IE中,这两个表单标签是等效的:

他们都会将表格提交回同一页面.然而,Safari和Chrome会将第一个表单发送到默认页面(index.php或其他) - 第二个表单与FF/IE的工作方式相同.

我很快就破解了我的代码,以便在通常打印空操作的任何地方,它根本不添加动作属性.

这看起来非常混乱,而不是做事的最佳方式.有谁能建议更好的方法?另外,任何人都可以告诉我为什么Webkit会做这样的事情?



1> staticsan..:

我经常使用


这意味着当前的URL但没有参数.


您可以使用单引号并仍然使用有效的XHTML; 你不必使用双引号.
哦,我的坏.我必须误解标准而不是.无论如何,我更喜欢双引号.

2> Gumbo..:

action属性是必需的,但您可以指定引用当前URI的空URI引用:



编辑     确定,当使用元素将空URI与指定的基URI一起使用时,这实际上是WebKit 528+(参见Bug 19884)的归档错误BASE.在这种情况下,WebKit采用基URI而不是从基URI解析空URI.

但根据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)         |
  `----------------------------------------------------------'

在这种情况下,BASE具有href属性的元素是嵌入在内容中基本URI.和嵌入在内容基础URI具有更高的优先级比URI用于检索实体.因此,根据RFC 3986,WebKit的行为实际上是预期的行为.

但是在HTML 5中,form'saction(仍然是草稿)中的空URI的这种行为与RFC 3986不同:

如果action是空字符串,则让action为文档的地址.

注意:此步骤是故意违反 RFC 3986,这需要在此处进行基本URL处理.这种违规行为的动机是希望与传统内容兼容.[RFC3986]

坦率地说,源代码中此注释后的HTML注释如下:


所以这是一个源自Internet Explorer的bug,它成为事实上的标准.



3> Eran Galperi..:

我认为最好的方法是不要省略action属性(不会验证),而是指定表单的实际操作.您是否有理由不指定行动?


它是一个通用的表单,在许多页面上,其中一些可能有一系列GET参数.我发现动作=""要比重新创建URL并对其进行正确编码要容易得多.
推荐阅读
郑小蒜9299_941611_G
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有