我在互联网上看到很多关于不使用框架的投诉,并且使用框架被认为是不好的做法,而且它们已经过时了。
但是,iframe不会过时,但它们是框架。是否认为使用它们是不好的做法?
此外,可以将iframe呈现给数据:png / base64或者其他什么,就像画布一样吗?
答案 0 :(得分:11)
但是,iframe不会过时,但它们是框架。是否认为使用它们是不好的做法?
有时你有将单独的HTML文档嵌入到另一个HTML文档中,这没关系。为了记录,HTML5有一整个专门用于嵌入外部内容的部分,其中一个相关元素是iframe
(W3C HTML5)。
当然,无论是好的还是坏的做法也高度依赖于你的用例,但最佳实践问题本质上往往是相当广泛的。
此外,可以将iframe呈现给数据:png / base64或者其他什么,就像画布一样吗?
事实上,是的,虽然IE does not appear to support data:text/html
at the moment:
<iframe src="data:text/html,<!DOCTYPE html><html><body><p>abc"></iframe>
但是,这不是&#34;正确的&#34;这样做的方法(即使验证者不同意语法是否有效 - 由于所有HTML符号,W3C的Nu验证器似乎不喜欢data:text/html
,而Validator.nu只是抱怨DOCTYPE中未编码的空格。要嵌入原始HTML,您需要使用新的srcdoc
属性而不是src
(具有even less browser support):
<iframe srcdoc="<!DOCTYPE html><html><body><p>abc"></iframe>
因此,一般来说,为iframe指定原始HTML现在是一个坏主意,即使浏览器开始支持srcdoc
属性,您也应该在具有src
属性的数据URI上使用它
答案 1 :(得分:1)
在我看来,使用 iframe 时需要考虑的最大问题是您可能包含的 3rd 方网站的安全问题。
例如,在 iframe 中,您包含来自第 3 方的内容。如果该第 3 方已被黑客入侵,那么您现在正在将您的用户直接从您自己的站点内暴露于该漏洞。事实上,对于您的用户来说,漏洞在于您的网站(他们可能不知道 iframe)。