获取iframe内容's的高度,而iframe正在托管一个代码为CAN'T被访问

Getting iframe content's height while iframe is hosting an EXTERNAL website whose code CAN'T be accessed

本文关键字:iframe 一个 代码 访问 CAN 高度 内容 获取      更新时间:2023-09-26

可能重复:
使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指向预期目标,不如将其指向服务器上的一个页面:

  1. 检索请求的URL并注入脚本。

  2. 重写具有相对URL的图像和其他资源,以使用指向源的绝对URL。

这是混乱和容易出错的。

或者,如果服务器上有某种HTML呈现器,则可以检索文档、解析文档并查询高度。这是混乱的,缓慢的,容易出错,并且不兼容跨浏览器。

我认为你正在寻找的真正答案是,不,如果没有跨领域资源的合作,就没有可靠的方法来实现这种效果。