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