代码之家  ›  专栏  ›  技术社区  ›  grossvogel

谁在修改我的DOM?

  •  2
  • grossvogel  · 技术社区  · 17 年前

    浏览器收到响应后,网页的DOM可能会发生什么变化?

    我在一个隐藏的输入元素的值中看到了这种行为,该元素包含一个单用途表单令牌。

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

    禁用javascript后问题仍然存在。向元素添加只读属性也没有帮助。

    新信息: 我又摆弄了一些,不管你信不信,在Firefox中关闭图像可以解决这个问题。

    为什么会发生这种情况?

    4 回复  |  直到 17 年前
        1
  •  1
  •   community wiki Stobor    17 年前

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

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

        2
  •  1
  •   seanb    17 年前

    你可能会有一些运气 只读=“只读” 在字段标签中,以及 自动完成=“关闭” .

    不确定浏览器自动补全功能是否会这样做,但这是合理的,也可以尝试在测试浏览器中禁用自动补全功能,看看这是否会改变什么。

        3
  •  1
  •   grossvogel    17 年前

    我对正在发生的事情的解释是不正确的。我想这是一件好事,因为我以为我看到的不应该发生!不管怎样,这是我现在所理解的情况:

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

    我认为DOM发生了变化,因为“查看源代码”的一些实现(我在几个浏览器中进行了测试)似乎也会导致页面重新加载。..

    谢谢你的建议。

        4
  •  0
  •   AmbroseChapel    17 年前

    你这是什么意思 提交表单时,查看DOM的当前状态 ?

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

    在不涉及客户端脚本的情况下,DOM不可能在客户端发生更改。

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