一直在到处寻找解决方案。当内容来自另一个域时,如何将 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)...
我已经阅读了一些 hack,但它们都包括使用添加到 iframe 的第二个 javascript 文件将 postMessage 发送回父级。然而,这并不是一个真正的解决方案,因为对于跨域内容,您没有他们将 javascript 文件添加到他们的服务器的特权。
有人有任何建议或替代解决方案吗?
最佳答案
I've read up on a few hacks but they all include using a second javascript file added to the iframe to send a postMessage back to the parent.
是的,这就是解决方案。
However this isnt really much of a solution because for cross domain content you don't have them sort of privileges to go round adding javascript files to their servers.
如果您与其他网站的关系不够好,当他们将页面发送给您的共同访问者时,他们无法帮助您查明页面的高度,那么您根本做不到。
要找出页面的高度,您需要访问 DOM。
如果您有权访问 DOM,那么您就可以访问 DOM 的内容。
如果您有权访问 DOM 的内容,则可以将用户的浏览器转到任何旧站点(例如,带有人事记录的公司内部网)并将数据复制到您的站点。
这将是一个巨大的安全漏洞,这就是为什么您需要其他站点的明确合作。
关于jquery - 如何根据跨域内容设置iframe高度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32763666/