修改 iframe 中 div 元素的宽度和高度 - 跨域策略

Posted

技术标签:

【中文标题】修改 iframe 中 div 元素的宽度和高度 - 跨域策略【英文标题】:Modifying width and height of a div element inside an iframe - cross domain policy 【发布时间】:2015-10-25 04:19:08 【问题描述】:

我有一个域和一个子域。域在我的控制之下,子域指向一个附属白标网站,即 DNS 指向他们的 IP。我想通过域上的 iframe 加载产品。

我了解由于跨域政策,我无法使用 javascript 更改样式。我想要完成的是修改 iframe 深处的 div 的高度和宽度。

使用 php 简单加载内容不起作用,因为页面编写了大量脚本,如果我这样做,页面的框架会出现,但没有可用的内容。

请指点我一个实用的解决方案?我知道 jquery 足以能够替换,添加样式到同一个域,iframe 或非 iframe 上的东西。但我不知道如何在子域上做到这一点。 我可以控制子域,即我可以将 dns 改回我想要的,但这会阻止白标站点工作。我无法添加任何标题。

【问题讨论】:

【参考方案1】:

如果您可以将自己的 JavaScript 代码放在两个域上,postMessage 函数应该可以帮助您。

https://developer.mozilla.org/en-US/docs/Web/API/Window/postMessage

这样的事情应该可以工作:

父母

var iframe = document.getElementById("whatever");
iframe.contentWindow.postMessage("hello");

内嵌框架

window.addEventListener("message", receiveMessage, false);

function receiveMessage(event)

    if (event.origin !== "http://your-parent-domain.com") return; // for security

    // do something here with event.data

【讨论】:

正如我所说,子域是白标,子域指向联属计划IP,所以我无法控制上面的内容。

以上是关于修改 iframe 中 div 元素的宽度和高度 - 跨域策略的主要内容,如果未能解决你的问题,请参考以下文章

div中iframe高度自适应问题

怎么让iframe自适应浏览器的高度和宽度

如何使 iframe 的宽度和高度与其父 div 相同?

怎样让iframe中的内容的宽度和高度改变后,dialog的宽高自适应?

如何使div中的图片自适应宽度和高度,图片不变形,可以超出div,超出部分隐藏

如果一个div在宽度为百分比的情况下,如何将这个div的高度的值设置成和宽度一样