gpt4 book ai didi

javascript - IE7 默认表单方法是 "GET"。我如何判断它是用户输入的还是默认的?

转载 作者:数据小太阳 更新时间:2023-10-29 04:27:23 26 4
gpt4 key购买 nike

如果用户创建了一个没有 method 属性的表单,似乎大多数浏览器都会在表单提交时处理这个问题。因此,在 DOM 准备好后检查表单元素时,您可以看到表单元素对象没有“方法”属性。

然而,IE7 显然在所有没有方法值的表单上设置了默认方法值“GET”。我不想争论 GET 还是 POST 是最明智的默认设置,我只是想找到一种方法让 POST 成为所有浏览器的默认表单方法。

我的问题是我无法判断用户是否为表单方法输入了“GET”值,或者 IE 是否将该值作为默认值注入(inject)。如果表单没有 method 属性,很明显用户没有指定,所以我可以安全地将其默认为 POST。但是,如果我看到表单方法的 GET 值,我无法判断用户是否指定了该值,或者它是否为黑色并且 IE7 在解析 HTML 时设置了 GET。

有人有什么想法吗?

最佳答案

IE 的行为正确!(*) 根据 DTD:

method      (GET|POST)     GET       -- HTTP method used to submit the form--

或者,在 XHTML DTD 中:

method      (get|post)     "get"

这意味着如果省略 method 属性,不仅表单默认以 GET 提交,而且 DOM 实际上应该包含 Attr 节点带有 DTD 默认值 GET 的方法

(*:好吧,有点。IE 在 HTML 文档中使用 XHTML 小写默认值,而它应该是大写。这并不重要,因为该属性无论如何在 HTML 中是不区分大小写的。并且嘿!IE 比所有其他浏览器都更符合标准。这是一个奇迹!)

那么您如何判断 Attr 节点是因为 DTD 属性默认设置而不是因为它在源中?使用 DOM Level 1 Core specified标志:

var form= document.getElementById('myform');
var attr= form.getAttributeNode('method');
var isomitted= attr===null || !attr.specified;

关于javascript - IE7 默认表单方法是 "GET"。我如何判断它是用户输入的还是默认的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2225735/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com