使用 iframe 是不好的做法吗? iframe 可以像画布一样被翻译成图像吗?
Posted
技术标签:
【中文标题】使用 iframe 是不好的做法吗? iframe 可以像画布一样被翻译成图像吗?【英文标题】:Is it bad practice to use iframes? Can iframes be translated into images in the same way canvases can? 【发布时间】:2014-08-26 22:15:34 【问题描述】:我在互联网上看到很多关于不使用框架的投诉,使用框架被认为是不好的做法,而且它们已经过时了。
但是,iframe 并没有过时,而是框架。使用它们是否被认为是不好的做法?
此外,iframe 是否可以像画布一样渲染为 data:png/base64 或其他格式?
【问题讨论】:
好吧,如果你在 iframe 中有一个画布.. :D 您可以截取 iFrame 并将其渲染为图像 =) iframe 的问题在于 SEO - 搜索引擎可能会链接到 iframe,而不是链接到您的页面。在我看来,这不是坏习惯。据我所知,您无法将其转换为图像,但您可以使用 ajax 获取它的内容,并将其放入任何块对象(如 div)中。 对于 SEO 问题,我可以使用 robots.txt 另见[链接] (***.com/questions/362730/…) 【参考方案1】:但是,iframe 并没有过时,而是框架。使用它们是否被认为是不好的做法?
有时您必须将单独的 html 文档嵌入到另一个文档中,这没关系。作为记录,HTML5 有一整节专门用于嵌入外部内容,其中一个相关元素是iframe
(W3C HTML5)。
当然,某件事是好的还是坏的做法也很大程度上取决于您的用例,但最佳实践问题本质上往往相当广泛。
另外,iframe 是否可以像画布一样渲染为 data: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>
然而,这不是“正确”的做法(甚至验证器也不同意语法是否有效——W3C 的 Nu 验证器似乎不喜欢 data:text/html
,因为所有的 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 上使用它。
【讨论】:
嗯,关于数据,我的意思是专门将 iframe 渲染为 base64 编码图像。对我来说似乎不可能。 @Doge:考虑到 iframe 的本质是动态 HTML 页面而不是静态图形图像,我不完全确定它首先会如何工作......【参考方案2】:在我看来,使用 iframe 时要考虑的最大问题是您可能包含的 3rd 方网站的安全问题。
例如,在 iframe 中包含来自第 3 方的内容。如果该第 3 方已被黑客入侵,那么您现在正在将您的用户从您自己的站点中直接暴露给该漏洞。事实上,对于您的用户来说,漏洞在于您的网站(他们可能不知道 iframe)。
【讨论】:
【参考方案3】:iframe 的使用是 Selenium QA 面试测试中的常见测试项目。 使用正确的命令让 Selenium 可以在 iframe 中找到内容可能会很棘手,并且在开发测试自动化时会引起一些混乱。
【讨论】:
请在您的回答中提供更多详细信息。正如目前所写的那样,很难理解您的解决方案。以上是关于使用 iframe 是不好的做法吗? iframe 可以像画布一样被翻译成图像吗?的主要内容,如果未能解决你的问题,请参考以下文章
asp.net 一个页面有两个iframe 在代码中可以控制第一个iframe的Attributes["src"] 但是第二个就不好用了