获取iframe内容's的高度,而iframe正在托管一个代码为CAN'T被访问
Getting iframe content's height while iframe is hosting an EXTERNAL website whose code CAN'T be accessed
可能重复:
使iframe适应其内容高度
如问题标题所述。我正在寻找一种方法,根据我的iframe托管的网站的高度来调整我的ifame的高度。因为我需要去掉iframe的垂直卷轴。同时,我不想给我的iframe设置一个非常大的静态高度,因为当我有小高度的页面时,这是不好的。
我找到了许多与我的问题相关的解决方案,但无法解决我的问题:
(*)当iframe托管内部页面时,更改iframe的高度很容易。您只需将以下脚本添加到iframe onload事件中:
var frame = (document.getElementById) ? document.getElementById("YourFrameID") : document.all["YourFrameID"];
var pageh = document.frames("YourFrameID").document.body.scrollHeight;
frame.style.height = pageh + 'px';
但是正如您所知,当iframe的src
在拥有iframe域之外时。脚本崩溃,并产生"拒绝访问"错误消息。
(*)最后,我知道如果我可以访问我的iframe托管的页面,我的目标就可以实现。也许这种技术被称为"跨领域通信"。
然而,我的iframe的目标是托管来自外部网站的页面,并且无法访问这些网站。
这个问题已经被问了很多次了。让我们通过提供一个最终答案来解决这个问题:)
或者。。比方说,实现我的具体目标是不适用的。
请注意,我使用ASP.NET 4.0
谢谢,
由于跨域安全原因,这是不可能的。
您可以使用中间人技术。与其直接将iframe指向预期目标,不如将其指向服务器上的一个页面:
-
检索请求的URL并注入脚本。
-
重写具有相对URL的图像和其他资源,以使用指向源的绝对URL。
这是混乱和容易出错的。
或者,如果服务器上有某种HTML呈现器,则可以检索文档、解析文档并查询高度。这是混乱的,缓慢的,容易出错,并且不兼容跨浏览器。
我认为你正在寻找的真正答案是,不,如果没有跨领域资源的合作,就没有可靠的方法来实现这种效果。
- 在iframe中加载url并添加一个类
- 如何使用JS/jQuery在另一个网站上显示iframe中的特定内容
- 将一个iframe覆盖在另一个ifame上
- 在单击一个或多个复选框的同时调用iframe
- 从一个iframe到另一个ifame的过帐表单-IE
- 我如何才能包含一个iframe视频,这样它就不会't负载
- 如何从一个友好的iframe中获取iframe实例
- 代理一个网站能够在iframe中进行所见即所得编辑-它是如何工作的
- 在html页面的iframe中显示一个警告框
- 从另一个 Iframe 刷新父 Iframe
- 当我有一个完整的html页面时,如何显示它's iframe中的源html
- 加载一个html或JavaScript文件作为iframe源
- 如何从另一个域访问 iframe 的元素
- 按日期为iframe创建一个HTML链接
- 如何将iFrame与带有'#'在一个简单的模态框中
- Ajax下拉/最后一个选项更改Iframe
- 有没有一种方法可以用一个请求加载多个iframe
- 是否可以打开一个新窗口并将iframe嵌入其中
- 一个iframe随机失败到XHR
- 我必须iframe一个父级和另一个子级,我想使用jQuery获取子iframe值,我怎么能得到