CSS3: пустой не работает [дубликат]

, чтобы загрузить файл, который отправляется пользователем как часть формы с помощью jquery, пожалуйста, следуйте приведенному ниже коду:

var formData = new FormData();
formData.append("userfile", fileInputElement.files[0]);

Затем отправьте объект данных формы на сервер.

Мы также можем добавить файл или Blob непосредственно к объекту FormData.

data.append("myfile", myBlob, "filename.txt");
25
задан BoltClock 14 March 2012 в 17:46
поделиться

2 ответа

Строго говоря, элемент <div> является непустым / непустым элементом в HTML, т. е. он не предназначен для самостоятельного закрытия. Хотя <div /> является действительным XHTML - из-за того, что /> указывает на самозакрывающийся (или пустой) XML-элемент - он интерпретируется обычными парсерами HTML и некоторыми валидаторами в качестве закрытого открывающего тега и поэтому недействителен HTML 4.01 и HTML5 .1

Фактически, запуск вашего данного фрагмента HTML через валидатор W3C (как HTML5) приводит к этому сообщению об ошибке:

синтаксис закрытия (/>), используемый для не-void HTML-элемента. Игнорирование косой черты и обработка в качестве начального тега.

Следовательно, что вы видите.


Из спецификации HTML5 (в первой ссылке):

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

После этого в подразделе для <div> элемента указано:

Элемент div должен иметь как начальный тег, так и конечный тег.

Это делает <div> в отличие от <p> или <li> , которые, как известно, не всегда требуют концевого тега.

Если вы поместите <p> сразу после незакрытого <p>, он неявно закрывает предыдущий <p>. Аналогично идет <li>. Это связано с тем, что вы не можете напрямую вставлять несколько абзацев или элементов списка вместе. Тем не менее, <div> является гнездовым на любую глубину. Таким образом, тэг открытия <div> не закрывает ранее нераскрытый тег <div>.

И именно поэтому вы видите, что видите.


1 На настоящих страницах XHTML (сериализованных как XML, служащих как application/xhtml+xml), первый элемент <div /> будет не развернуть, чтобы обернуть второй элемент <div>text</div>. Вместо этого, как XHTML, он будет следовать правилам XML и содержать себя как пустой элемент, а не следовать правилам супа HTML-тегов и сам интерпретироваться как открывающий тег.

68
ответ дан BoltClock 22 August 2018 в 13:00
поделиться
  • 1
    24 секунды после того, как был задан вопрос. ?!?!? – thirtydot 28 March 2011 в 09:25
  • 2
    @thirtydot: Мой ответ начался только одним предложением: D – BoltClock♦ 28 March 2011 в 09:26
  • 3
    @BoltClock: Было бы проблемой просто опубликовать gobbledygook в течение 30 секунд после того, как будет задан вопрос, и не подумайте даже о одном соответствующем предложении. Вы заслуживаете голоса. – thirtydot 28 March 2011 в 09:30
  • 4
    @BoltClock: Я не могу не восхищаться кем-то, чтобы поднять 16 голосов за ответ на вопрос, о котором спросили о SO примерно раз в неделю. :-) Красиво объяснено, хотя и не упоминается раздел 4.8 документа, на который вы ссылаетесь, помогает. – Alohci 28 March 2011 в 11:37
  • 5
    @thirtydot, @Alohci: Хуже всего, я опубликовал этот ответ в классе во время теста кодирования. И да, мне разрешили просматривать SO - не знаю, почему. – BoltClock♦ 28 March 2011 в 12:58
  • 6
    – BoltClock♦ 16 August 2011 в 17:53
  • 7
  • 8
    – BoltClock♦ 17 April 2013 в 06:37
  • 9
    – BoltClock♦ 17 April 2013 в 06:48
  • 10

В этот момент тег нуждается в отдельном дополнении - возможно, это может быть добавлено.

Обратите внимание, что в правильном синтаксисе даже самозакрывающимся тегам требуется дополнительное пространство (<br />, а не <br/>)

0
ответ дан jeffkee 22 August 2018 в 13:00
поделиться
  • 1
    Нет, <br/> является полностью допустимым XHTML / XML. Пространство несущественно. Интересно, что вы видите только пространство в документах, связанных с XHTML, в то время как статьи о любом другом виде XML, похоже, его пропускают. – BoltClock♦ 28 March 2011 в 08:36
  • 2
    Хм, да, во всех «официальных» документация и amp; инструкции, я всегда видел самозакрывающуюся косую черту, которой предшествует пробел .. Странно! – jeffkee 28 March 2011 в 08:37
  • 3
    Пространство перед косой чертой было обходным путем для ошибки синтаксического анализа в невероятно старом браузере, который больше не используется ни в каком значительном количестве (но я не помню, в каком браузере он был на моей голове). – eyelidlessness 2 May 2011 в 02:53
  • 4
    @eyelidlessness: Netscape 4. См. stackoverflow.com/questions/305431/… Обратите внимание, что пустые элементы XHTML все еще проверяют, есть ли у вас пробел или нет. Пространство существует только в качестве обходного пути, как вы сказали, и не является обязательным. – BoltClock♦ 7 May 2011 в 07:37