srcdoc=";之间的区别是什么&引用;和src=";数据:text/html,“;在一个<;iframe>;?

srcdoc=";之间的区别是什么&引用;和src=";数据:text/html,“;在一个<;iframe>;?,html,iframe,Html,Iframe,例如,它们之间的区别是什么: <iframe srcdoc="<p>Some HTML</p>"></iframe> <iframe src="data:text/html,<p>Some HTML</p>"></iframe> 为什么需要srcdoc (*)注: 似乎可以使用带有src属性的子框架通过URL()加载页面: <iframe srcdoc="<iframe src='ht

例如,它们之间的区别是什么:

<iframe srcdoc="<p>Some HTML</p>"></iframe>
<iframe src="data:text/html,<p>Some HTML</p>"></iframe>
为什么需要
srcdoc


(*)注

似乎可以使用带有
src
属性的子框架通过URL()加载页面:

<iframe srcdoc="<iframe src='http://microsoft.com'></iframe>"></iframe>

主要区别在于“src”属性包含要嵌入到标记中的文档的地址

另一方面,“srcdoc”属性包含要在内联框架中显示的页面的HTML内容

srcdoc的主要缺点是并非所有浏览器都支持它,而src与所有浏览器都兼容

有关详细说明,请点击以下链接:

来自MDN:

一,。嵌入上下文要包含的页面内容。这 属性应与沙盒和 无缝属性。如果浏览器支持srcdoc属性,则 将重写src属性(如果存在)中指定的内容。 如果浏览器不支持srcdoc属性,它将显示 改为在src属性中指定的文件(如果存在)


因此,
srcdoc
属性覆盖使用
src
属性嵌入的内容


另外,您所说的关于以下代码段
data:text/html
的内容将被调用,并且它有一些限制

二,。数据URI不能大于32768个字符

1.2.

在您的示例中,这两种形式在功能上是相同的。但是,您可以同时使用
src
srcdoc
属性,允许非HTML5浏览器使用
src
版本,HTML5浏览器可以使用
srcdoc
版本以及
沙盒
无缝
属性,这些属性在如何处理iFrame方面提供了更大的灵活性。

srcdoc:嵌入上下文要包含的页面内容。该属性应与沙盒和无缝属性一起使用。如果浏览器支持srcdoc属性,它将覆盖src属性(如果存在)中指定的内容。如果浏览器不支持srcdoc属性,它将显示在src属性中指定的文件(如果存在)


src:要嵌入的页面的URL。

在编写时-Chrome(v36)中的srcdoc允许设置和获取Cookie,而将src与数据URL一起使用则不允许:

未捕获的安全性错误:无法从“文档”读取“cookie”属性:在“数据:”URL中禁用cookie


这对您来说可能很重要,也可能不重要,但排除了在我正在构建的应用程序中使用数据URL的可能性,这是一个遗憾,因为IE目前当然不支持srcdoc(v11)。

其他答案列出了一些表面上的差异,但是,真正没有注意到关键的区别,这解释了为什么浏览器/规范编写器实际上会复制已经存在的东西:


另一个明显的区别是,具有数据uri的
src
属性支持uri百分比编码规则,而
srcdoc
不支持,因为它支持常规html语法

这些来源将产生不同的结果:


如果带有HTML内容的
src
属性的框架是跨域的



但是带有HTML内容的
srcDoc
属性的iframe不是跨域的

,但是
src
属性也可以包含页面的HTML内容,使用数据URI“因此,
srcDoc
属性覆盖使用
src
属性嵌入的内容。”,我看到两个带有微软网站的iFrame。@MarcelKorpel支持
srcdoc
的Firefox的第一个版本是25()@MrAlien关于数据URI的长度限制有一个很好的观点,这与html属性不同。不管怎么说,这一限制似乎是由微软实施的,因为不要说任何关于限制的内容,只说“注意,一些使用URL的应用程序可能会施加长度限制”@MarcelKorpel看看无缝属性和其他较新的html5属性,你就会明白为什么需要它srcdoc@Oriol谢谢你,是的,mdn没有指定任何限制,但aamsure uri确实有限制,但是
sandbox
无缝
属性也可以与
src
属性一起使用,不是吗?在我看来,
src
srcdoc
@Oriol更灵活,我认为我的答案直接说明了为什么这一点很重要,不是作为一个缺陷,而是作为一个特性,但是
src
属性也可以包含页面的HTML内容,使用数据和优点。数据URI在某些浏览器上有限制,因此
srcdoc
在这些情况下工作得更好。在iframe中,父框架背景和字体样式也会层叠到iframe中,增加更多的实用程序。如果主要的好处是不受信任的内容,为什么要将其指定为包含内联内容?大多数不受信任的内容不是来自外部URL吗?也就是说,为什么不采用[data]URI的
沙盒dsrc
属性?(这还可以避免将来的浏览器在不实现沙盒的情况下实现srcdoc)。因为作者已经可以使用外部URL(在单独的域上)来服务不受信任的内容。你说的安全是什么意思?它无法访问嵌入页面?嵌入付款人无法访问它?或者两者都有?或者,对于常规的div或HTML组件,这有什么意义呢?iframe的“沙盒”上的任何文章都会讨论它提供了什么好处。这是一个很好的观点,Chrome将数据uri视为跨域的。Firefox将它们视为同一来源,但不确定Edge的功能。你所说的“不跨域”是什么意思?@GregoryGarshak“不跨域”,意思是iframe内容将被视为未来的f
<iframe srcdoc="<iframe src='http://microsoft.com'></iframe>"></iframe>