HTML-код генерирует синтаксическую ошибку, но все еще работает; «правильный» код не - PullRequest
0 голосов
/ 31 октября 2018

Друг (и я, новичок в HTML) поделился этим фрагментом кода для встраивания потокового видео с камеры на веб-страницу:

<iframe scrolling="no" width="640" height="480"
<img src = http://10.0.0.172:8086/stream_simple.html"
stream=BoardOne" frameborder="0" allowfullscreen>
</iframe>

Это, очевидно, неправильно для меня (и не говоря уже о пропущенных открытых кавычках перед URL и "BoardOne"). Фактически, PHPStorm отмечает ошибку «Начало тега не закрыто» сразу после «480». Незакрытый тег img, расположенный прямо в середине атрибута iframe, не может работать, не так ли?

И все же мой друг говорит мне, что это так. Хуже того, когда я пытаюсь исправить то, что мне кажется правильным, он говорит мне, что это не работает. Вот моя версия:

<iframe scrolling="no" width="640" height="480"
stream="BoardOne" frameborder="0" allowfullscreen>
    <img src="http://10.0.0.172:8086/stream_simple.html"/>
</iframe>

Опять же, я новичок: может кто-нибудь объяснить, как может работать код моего друга, и все же он утверждает, что мой код не работает?

Ответы [ 3 ]

0 голосов
/ 31 октября 2018

Это «работает» в зависимости от того, каково ваше определение «работает».

iframe должен иметь атрибут src, а содержимое этого URL будет отображено в элементе <iframe>. Содержимое элемента <iframe> является только резервным содержимым, которое появляется, если браузер не понимает, что такое <iframe>.

В первом случае HTML-код в значительной степени является мусором, поэтому вы зависите от того, как браузер на самом деле его интерпретирует. Похоже, что он в значительной степени игнорирует частичный тег <img и связывает атрибут src с iframe, поэтому он имеет этот атрибут и отображает содержимое.

Во втором, синтаксически правильном случае, <iframe> правильно понимается как iframe, а <img> - как его запасной контент, поэтому он не отображается, потому что ваш браузер понимает iframe. И вы переместили атрибут src в атрибут <img>, поэтому в iframe отсутствует src и ничего не отображается.

0 голосов
/ 31 октября 2018

Первый пример кода явно неправильный. Вы можете проверить проверку HTML, используя такой инструмент, как w3c-инструмент проверки разметки . Попробуйте перейти к инструменту, набрав

<!DOCTYPE html>
<html>
<head><title></title></head>
<body>
<iframe scrolling="no" width="640" height="480"
stream="BoardOne" frameborder="0" allowfullscreen>
    <img src="http://10.0.0.172:8086/stream_simple.html"/>
</iframe>
</body>
</html>

и прочитайте сообщения об ошибках тега iframe.

Кроме того, если вы новичок в HTML и надеетесь, что ваш друг скажет вам, работает ли ваш код, вы должны действительно научиться тестировать его на своем компьютере (в большинстве случаев вы можете просто создать простой текстовый файл, заканчивающийся в расширении .html и откройте его в браузере) или воспользуйтесь онлайн-инструментом, таким как codepen или codesandbox , чтобы проверить свой код.

0 голосов
/ 31 октября 2018

Ваш код определенно работает. Код ваших друзей не работает. Невозможно, чтобы закрытый тег не вызывал синтаксическую ошибку

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...