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

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

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

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

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

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

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

Я не могу поделиться всей страницей, но это элемент. <input type = "hidden" name = "reqToken" value = "116568731649388bac62295" id = "formToken" />

grossvogel 05.12.2008 05:16

Публикует ли оно правильное значение?

seanb 05.12.2008 05:27

К сожалению, он публикует измененное значение, которое отличается от того, которое сервер изначально выписал и ожидает возврата. Похоже, отправка недействительной формы ...

grossvogel 05.12.2008 05:30
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Введение в CSS
Введение в CSS
CSS является неотъемлемой частью трех основных составляющих front-end веб-разработки.
Как выровнять Div по центру?
Как выровнять Div по центру?
Чтобы выровнять элемент <div>по горизонтали и вертикали с помощью CSS, можно использовать комбинацию свойств и значений CSS. Вот несколько методов,...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Travel Booking Angular Template один из лучших Travel & Tour booking template in the world. 30+ валидированных HTML5 страниц, которые помогут...
1
3
200
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

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

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

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

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

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

Если, с другой стороны, вы отправляете серверу и получаете обратно полностью новую модель DOM, значит, сервер ее изменил.

отправка формы на сервер, просмотр DOM (элемент проверки) или использование текстового поля - все это способы просмотреть интересующую меня часть: value = "XXX" Все эти три согласны с тем, что такое XXX, но не совпадают значение, хранящееся в сеансе, ИЛИ значение, которое я вижу, когда просматриваю исходный код в браузере.

grossvogel 06.12.2008 04:10

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

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

Ответ принят как подходящий

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

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

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

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

Одна из (многих) вещей, которая больше всего меня бесит в Firefox, - это его настойчивое желание перезагрузить страницу для просмотра исходного кода. Особенно, когда указанная страница находится в системе авторизации. К счастью, на панели инструментов веб-разработчика есть обходной путь, который позволяет «просматривать созданный исходный код» и избегать перезагрузки.

Peter Boughton 28.02.2009 21:03

Другие вопросы по теме