到处寻找解决方案。当内容来自其他域时,如何将iframe高度设置为iframe内容的大小?我正在使用以下JavaScript,但我得到permission denied to access property 'document'
,因为iframe内容来自其他域。
function resizeIframe(iframe) {
if(iframe.contentWindow.document.body.scrollHeight < 500) {
iframe.height = "500px";
} else {
iframe.height = iframe.contentWindow.document.body.scrollHeight + "px";
}
}
<iframe name="myiframe" id="myiframe" onload="setIframeHeight(this.id)...
我已经阅读了几个黑客,但他们都包括使用添加到iframe的第二个javascript文件将postMessage发送回父级。然而,这实际上并不是一个很好的解决方案,因为对于跨域内容,您没有他们的特权来将javascript文件添加到他们的服务器。
任何人有任何建议或替代解决方案吗?
答案 0 :(得分:0)
我已经阅读了几个黑客,但他们都包括使用添加到iframe的第二个javascript文件将postMessage发送回父级。
是的,这是解决方案。
然而,这并不是一个很大的解决方案,因为对于跨域内容,您不具备将javascript文件添加到其服务器的特权。
如果您与其他网站没有足够的关系,可以帮助您了解页面在发送给您的共同访问者时的高度,那么您根本无法做到做到这一点。
要查找页面的高度,您需要访问DOM。
如果您有权访问DOM,则可以访问DOM的内容。
如果您可以访问DOM的内容,则可以将用户的浏览器发送到任何旧站点(例如,带有人员记录的公司内部网)并将数据复制到您的站点。
这将是一个巨大的安全漏洞,这就是为什么你需要其他网站的明确合作。