Javascript 获取iframe内容';当iframe托管代码可以';无法访问

Javascript 获取iframe内容';当iframe托管代码可以';无法访问,javascript,jquery,asp.net,iframe,resize,Javascript,Jquery,Asp.net,Iframe,Resize,可能重复: 如问题标题所述。我正在寻找一种方法来调整我的iframe的高度根据我的iframe托管的网站的高度。因为我需要去掉iframe的垂直滚动。同时,我不想给iframe设置一个非常大的静态高度,因为当我有小高度的页面时,这是不好的 我找到了许多与我的问题相关的解决方案,但无法解决我的问题: (*)在iframe承载内部页面时更改iframe的高度很容易。您只需将以下脚本添加到iframe onload事件: var frame = (document.getElemen

可能重复:

如问题标题所述。我正在寻找一种方法来调整我的iframe的高度根据我的iframe托管的网站的高度。因为我需要去掉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将承载的页面代码。我没有。那么,你有什么建议?难道没有办法解决这个问题吗(这是由于安全原因,JavaScript不允许跨域通信。您不能从父页面修改外部站点中的任何内容。