Как узнать недопустимый HTML-код, который мой браузер решил игнорировать?

Например, в следующем HTML...

<form name="outerform">
  <input type="text" name="outer1"/>
  <input type="text" name="outer2"/>

  <div>
    <form name="innerform" method="post" action="#">
      <input type="text" name="inner1"/>
    </form>
  </div>
</form>

Firefox просто выбросит тег innerform <form>, так как формы не могут быть вложенными.

Я столкнулся с этим при исправлении некоторого устаревшего кода. Кто-то разместил тег <form>, покрывающий почти весь контент body. Когда я добавил свой собственный, более локализованный <form>, Firefox удалил внутренний тег, и мои отправки отправились во внешнюю форму. Поскольку я выполнял некоторую обработку jQuery для создания моего URL-адреса отправки, я подумал, что это моя ошибка. Я понял проблему после просмотра отображаемого HTML на вкладке HTML Firebug.

Если бы в браузере или Firebug была вкладка для «игнорируемого HTML» или какой-то другой метод, я бы сразу же выбрал ее. Я не могу просто создать View-Source и вставить его в веб-службу проверки W3C по следующим причинам:

  1. Из соображений безопасности компьютер разработки, на котором я работаю, не подключен к общедоступному Интернету.
  2. На вкладке HTML Firebug отображается отображаемый HTML-код, поэтому недопустимый тег HTML уже удален.

Наконец, в редакторе (Eclipse) я обычно ловлю подобные ошибки. Но мы используем много включаемых файлов и фреймворк Tiles, поэтому за раз вы видите только фрагмент конечной HTML-страницы.


person Vik David    schedule 29.12.2011    source источник
comment
Источник представления Firefox не показывает отображаемый HTML; если я поставлю что-то вроде вашего теста, он покажет оба тега <form>...   -  person Boris Zbarsky    schedule 30.12.2011
comment
Спасибо, я исправил это в вопросе. Я имел в виду вкладку HTML Firebug, а не источник просмотра.   -  person Vik David    schedule 05.01.2012


Ответы (3)


Я нашел свое решение. Спасибо комментарию Бориса Збарского за то, что указал мне правильное направление. Источник представления показывает загруженный HTML, но инспектор Firebug DOM показывает отображаемый HTML (я ошибся в вопросе). Решение:

  1. Сделайте источник просмотра и сохраните файл (Файл 1)
  2. Откройте инспектор DOM Firebug, щелкните правой кнопкой мыши элемент верхнего уровня <html>, скопируйте HTML и сохраните в файл (файл 2).
  3. Используйте инструмент сравнения, чтобы сравнить два файла. В графическом инструменте сравнения в файле 2 будут отображаться промежутки, в которых браузер игнорировал/удалял HTML.

Переформатирование HTML в двух файлах может упростить сравнение.

person Vik David    schedule 30.12.2011

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

Вы можете проверить HTML в автономном режиме; например, я использую плагин для Coda, который проверяет HTML в автономном режиме.

person Wex    schedule 29.12.2011

Если у вас есть инструмент wget, вполне практично получить точную копию HTML, сгенерированного вашим сервером. Даже функция View Source не всегда точно показывает, что было загружено (может быть, и сейчас, но я часами смотрел там «действительный» код, когда сервер делал это неправильно).

Вы можете получить wget для MS-Windows из инструментов mingw на SourceForge.net. Под Linux он, скорее всего, уже установлен, если не искать его в своих репозиториях.

person Alexis Wilke    schedule 09.06.2014