Кто меняет мой DOM? - PullRequest
       17

Кто меняет мой DOM?

1 голос
/ 05 декабря 2008

Что может изменить DOM веб-страницы после того, как браузер получит ответ?

Я вижу это поведение в значении скрытого элемента ввода, который содержит одноразовый маркер формы.

Когда я «просматриваю источник» в браузере, я вижу правильное значение, записанное сервером. Когда я отправляю форму, просматриваю текущее состояние DOM или просто изменяю элемент на текстовый ввод, я вижу другую строку. Таким образом, значение, которое содержит ввод, когда пришло время отправить обратно на сервер, отличается от того, которое изначально отправлял сервер.

Проблема сохраняется с отключенным JavaScript. Добавление атрибута только для чтения к элементу также не помогло.

НОВАЯ ИНФОРМАЦИЯ: Я возился с этим еще немного, и, верьте или нет, отключение изображений в Firefox устраняет эту проблему.

С какой стати это произошло?

Ответы [ 4 ]

1 голос
/ 28 февраля 2009

Я был не прав в моей интерпретации происходящего. Я думаю, это хорошо, потому что то, что я думал, что видел, никогда не должно случиться! Во всяком случае, вот ситуация, как я теперь понимаю:

Маркер формы здесь предназначен для одноразового использования, поэтому он действителен только для загрузки одной страницы. Где-то еще на странице был тег img без атрибута src, который заставлял браузер пытаться загрузить изображение из /. Так как страница индекса является страницей php, токен зациклен.

Я полагал, что DOM изменился, я думаю, потому что некоторые реализации 'view source' (я тестировал в нескольких браузерах), казалось, также вызывали перезагрузку страницы ...

Спасибо за все предложения.

1 голос
/ 05 декабря 2008

Возможно, вам повезет, если вы добавите readonly = "readonly" в тег поля и autocomplete = "off" .

Не уверен, что автозаполнение браузера будет делать это, но это правдоподобно, также можно попробовать отключить автозаполнение в ваших тестирующих браузерах и посмотреть, изменит ли это что-нибудь.

1 голос
/ 05 декабря 2008

Если в браузере есть функция «сохранить данные формы», возможно, он предварительно заполняет данные ранее отправленным значением.

(Я ожидаю, что популярные браузеры достаточно умны, чтобы не заполнять скрытые поля, но это один из источников, который я могу предложить ...)

0 голосов
/ 05 декабря 2008

Что вы подразумеваете под "когда я отправляю форму, просмотрите текущее состояние DOM" ?

Если вы отправляете форму, отправляет ли она запрос на сервер? Вы говорите о состоянии DOM на странице результатов, отправленной обратно сервером?

На самом деле невозможно, чтобы без участия сценариев на стороне клиента ваша DOM была изменена на стороне клиента.

Если, с другой стороны, вы отправляете на сервер и возвращаете совершенно новый DOM, тогда сервер его изменил.

...