谁在改变我的DOM?

时间:2008-12-05 02:12:15

标签: html forms dom client-side

在浏览器收到响应后,可能会更改网页的DOM?

我在包含一次性表单令牌的隐藏输入元素的值中看到此行为。

当我在浏览器中查看“源”时,我看到了正确的值,由服务器写出。当我提交表单时,查看DOM的当前状态,或者只是将元素更改为文本输入,我看到一个不同的字符串。因此,当回发到服务器时输入所持有的值与服务器最初发送的值不同。

禁用javascript后问题仍然存在。向元素添加readonly属性也无济于事。

新信息: 我更多地摆弄了这个,不管你信不信,在Firefox中关闭图片会让这个问题消失。

为什么会发生这种情况?

4 个答案:

答案 0 :(得分:1)

如果浏览器具有“保存表单数据”功能,则可以使用先前提交的值预先填充数据。

(我希望流行的浏览器足够智能,不会填充隐藏的字段,但这是我可以建议的一个来源......)

答案 1 :(得分:1)

您可能会在字段标记中添加 readonly =“readonly”,并且 autocomplete =“off”

不确定浏览器自动填充是否会这样做,但这似乎是合理的,也可以尝试在测试浏览器中禁用自动完成功能,看看是否有任何改变。

答案 2 :(得分:1)

我对正在发生的事情的解释不正确。我想这是件好事,因为我认为我所看到的不应该发生!无论如何,这就是我现在理解的情况:

此处的表单令牌是单用的,因此它仅对单个页面加载有效。页面上的其他位置是一个没有src属性的img标记,这导致浏览器尝试从/加载图像。由于索引页面是一个php页面,因此令牌被循环。

我认为DOM改变了,我认为,因为'view source'的一些实现(我在几个浏览器中测试)似乎导致页面重新加载...

感谢所有建议。

答案 3 :(得分:0)

当我提交表单时,“是什么意思,查看DOM的当前状态”

如果您提交表单,它是否会向服务器发送请求?您是在谈论服务器发回的结果页面上的DOM状态吗?

在没有涉及客户端脚本的情况下,您的DOM在客户端更改是不可能的。

另一方面,如果你提交给服务器并获得一个全新的DOM,那么,服务器就改变了它。