html - HTML 代码产生语法错误但仍然有效;“正确”的代码不
问题描述
一个朋友(和我一样,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>
再说一次,我是新手:有人能解释一下我朋友的代码是如何工作的,但他声称我的代码不行吗?
解决方案
它“有效”取决于您对“有效”的定义。
iframe 应该有一个src
属性,并且该 URL 的内容将被呈现到<iframe>
元素中。元素的内容<iframe>
只是在浏览器不理解 an 时出现的后备内容<iframe>
。
在第一种情况下,HTML 几乎是垃圾,因此您取决于浏览器如何真正宽松地解释它。看起来它在很大程度上忽略了其中的部分<img
标记并将src
属性与相关联iframe
,因此它具有该属性并显示内容。
在第二种语法正确的情况下,<iframe>
被正确理解为 iframe 而 被正确理解为<img>
它的后备内容,因此它不会显示,因为您的浏览器理解 iframe。而且您已将该src
属性移动为 的属性<img>
,因此 iframe 缺少 asrc
并且不显示任何内容。
推荐阅读
- java - 绘制形状时鼠标输入的JavaFX问题?
- linqpad - LINQPad 演示数据库位置 (DemoDB.sdf)
- html - HTML 下拉列表仅显示标签
- c# - 如何测试在 xUnit 中不会触发事件?
- python - 如何创建点击事件
- google-cloud-platform - 谷歌AI平台自定义多输入预测例程,如何读取json输入
- python - 在 Anaconda 中安装 python-midi 包
- firebase - 如何设置 Firebase 规则以允许经过身份验证的用户仅读取和写入自己的数据?
- swift - TableView didSelectRow 无法按预期结果执行
- python-3.x - 如何在列表中的列表中查找最大和最小数字