jquery - 如何根据跨域内容设置iframe高度?

标签 jquery css iframe height

一直在到处寻找解决方案。当内容来自另一个域时,如何将 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/

相关文章:

javascript - Angular 2 从数组中添加或删除项目

css - IE 元素的高度不能通过最小高度跨越其绝对定位的 flex 容器

javascript - 打乱所有具有相同类别的标签

CSS 动画无法按预期在 Safari 中使用图像元素

css - 使用 :after and :before 时获取空格

google-maps - 从Google Maps Embed iframe删除黑色标题

javascript - document.getElementsByName 返回 NULL,除非我查看 HTML 源

html - 让 iframe 内容留在 div 中

javascript - 以编程方式初始化多个 jQuery slider ,每个 slider 都有不同的 onChange 函数

php - 使用 jQuery ajax 通过 formData() 上传文件和表单数据