跨域 iframe 调整大小 [英] cross-domain iframe resize

查看:36
本文介绍了跨域 iframe 调整大小的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如何调整来自另一个域的 iframe 的大小

-编辑

向下滚动一些解决方案..或阅读如何不这样做:D

经过数小时的代码黑客攻击 - 结论是 iframe 内的任何内容都无法访问,即使是在我的域上呈现的滚动条.我尝试了很多技术都无济于事.

为了节省您的时间,甚至不要走这条路,只需使用 sendMessages 进行跨域通信即可.有 HTML 插件 <我使用的 5-转到底部的一个很好的例子:)

<小时>

过去几天我一直在尝试将 iframe 集成到网站中.这是一个短期解决方案,而另一方正在开发和 API(可能需要几个月的时间......)并且因为这是我们想要使用easyXDM的短期解决方案-我可以访问另一个域,但是要求他们按原样添加p3p标头已经很困难了.....

3 个 iframe

我找到的最接近的解决方案是 3 个 iframe - 但它对 chrome 和 safari 有影响,所以我不能使用它.

在 chrome 中打开

http://www.johnchapman.name/aspnet-proxy-page-cross-domain-requests-from-ajax-and-javascript/

重新渲染页面

我没有走那么远,但是有 jscript 引擎可以查看源文件并根据源文件重新呈现页面.但这需要破解那些 jscripts .. 这对商业实体来说不是一个理想的情况......和一些涉及纯java小程序或服务器端渲染

http://en.wikipedia.org/wiki/Server-side_JavaScript

http://htmlunit.sourceforge.net/ <-java 不是 jscript

http://maxq.tigris.org/

<小时>

编辑 09-2013更新

所有这些都可以通过 HTML5 套接字完成.但对于非 HTML5 投诉页面,easyXDM 是很好的后备方案.

解决方案 1 非常棒的解决方案!

使用easyXDM

在您的服务器上,您以

的形式设置了一个页面

<头><script src="scripts/easyXDM.js" type="text/javascript"></script><script type="text/javascript" language="javascript">var transport = new easyXDM.Socket(/** 配置 */{远程:http://www.OTHERDOMAIN.com/resize_intermediate.html?url=testpages/resized_iframe_1.html",//要附加内联框架的元素的ID容器:嵌入式",onMessage:函数(消息,来源){var settings = message.split(",");//在母版页上使用 jquery.//$('iframe').height(settings[0]);//$('iframe').width(settings[1]);//如果不使用任何复杂页面,没有jquery的正常解决方案(默认)this.container.getElementsByTagName("iframe")[0].style.height = settings[0];this.container.getElementsByTagName("iframe")[0].style.width = settings[1];}});<身体><div id="嵌入式"></div>

在调用者域上,他们只需要在同一个地方添加 intermediate_frame html 和 easyXDM.js.就像父文件夹一样 - 然后您可以访问相关目录或仅为您所包含的文件夹.

选项 1

如果您不想向所有页面添加脚本,请查看选项 2!

然后他们可以在您需要调整大小的每个页面的末尾添加一个简单的 jscript.无需在每个页面中都包含 easyxdm.

 

我修改了它发送的参数.如果您希望宽度正常工作,则otherdomain 上的页面需要在样式中包含页面的宽度,该样式看起来类似于: