关于如何调整iFrame的大小以适应不跨域的URL的内部内容,或者是跨域的,但是有很多文章和问题。开发者控制。
但是我找不到如何调整我无法控制的iFrame的大小,因此可以postMessage
回到父级。
这可能吗?
即。想象一下,我的网站mysite.com正在尝试使用iFrame CNN.com。我怎样才能调整CNN iFrame的大小,以便显示iFrame的全部内容,而无需滚动CNN iFrame。
修改
由于iFrame是跨域的,因此,由于安全限制,读取iFrame内容并根据内容高度重新调整大小的简单解决方案无效。例如,Chrome在尝试阅读其他域上的iFrame内容时会给我这个例外:
Uncaught SecurityError:无法阅读' contentDocument'属性来自> ' HTMLIFrameElement&#39 ;: 阻止了一个有起源的框架" http://dev"从访问 具有原点" http://cnn.com"的框架。协议,域名, 和端口必须匹配。
因此,常见的解决方案是使iFramed内容与托管页面进行通信,如here所示。但是,由于我的案例中的URL CNN.com完全是第三方并且不受我控制,因此我无法遵循跨域解决方法。
答案 0 :(得分:0)
根据我收到的评论,似乎可以肯定地说,无法从客户端/浏览器端重新调整跨域iFrame的大小。
也许一些复杂的服务器端算法可以请求页面并尝试提供有关大小的提示,但在客户端无法做任何事情。