【发布时间】:2011-04-10 06:53:25
【问题描述】:
如何制作只显示部分 iframe 网页的 iframe?
让我们以 youtube 为例。 iframe 如何只显示 youtube 视频播放器?
谢谢,
奥德
【问题讨论】:
-
你真的不能那样做,你能不能运行一些服务器端代码把你想要的部分从页面中拉出来,然后推送到 iframe 中?
-
(如果是 YouTube,你会使用他们的嵌入代码。)
如何制作只显示部分 iframe 网页的 iframe?
让我们以 youtube 为例。 iframe 如何只显示 youtube 视频播放器?
谢谢,
奥德
【问题讨论】:
这是不可能的:iframe 将始终显示完整的文档。同源政策将阻止您参与其中。
唯一的解决方法是从您的服务器获取 Youtube 的 HTML 数据(使用服务器端语言),然后翻译页面中包含的所有相关引用,并将其作为服务器上的页面输出。然后,您可以从中隔离特定元素,因为您处于自己域的上下文中。这称为设置服务器端代理。
然而,这是一个高度不完美和艰难的过程,并且几乎(有时完全)在不破坏东西的情况下不可能做到正确,尤其是使用 JavaScript 和视频。另外,这很可能是非法的,至少在 YouTube 的情况下是这样。
【讨论】:
如果您专门寻找 YouTube,您可以为您所关注的视频动态获取嵌入代码并以这种方式显示。如果您正在寻找一个通用的解决方案,那么您需要与目标站点的 HTML 进行长时间的会话。例如,如果您发现您的内容都在 <div id='content-you-want'> 中,那么您可以执行以下操作:
$.get('proxy.php?url=' + urlEncode("http://my-target-url.com"), function(result_data) {
$("#target-element").html($(result_data).find("#content-you-want").html());
}
如果您使用的是 jQuery。但是,如果您想要的东西不能方便地全部包含在div 和id 中,那么仍有大量工作要做。而且你需要 proxy.php 来击败同源策略。
【讨论】: