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

谁在改变我的家庭?

  •  1
  • grossvogel  · 技术社区  · 16 年前

    浏览器收到响应后,更改网页的DOM可能是什么?

    我在一个隐藏的输入元素的值中看到了这种行为,该元素包含一个一次性表单标记。

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

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

    新信息: 不管你信不信由你,我在这方面做了更多的尝试,在火狐中关闭图片会让这个问题消失。

    这到底为什么会发生?

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

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

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

        2
  •  1
  •   seanb    16 年前

    你可能有点运气 readonly=“只读” 在字段标记中,以及 autocomplete=“关闭” .

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

        3
  •  1
  •   grossvogel    16 年前

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

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

    我认为DOM改变了,因为“视图源代码”的一些实现(我在几个浏览器中测试过)似乎也导致了页面重新加载…

    谢谢你的建议。

        4
  •  0
  •   AmbroseChapel    16 年前

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

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

    实际上,如果不涉及客户端脚本,您的DOM就不可能在客户端发生更改。

    另一方面,如果您提交到服务器并返回一个全新的DOM,那么,好吧,服务器更改了它。