跨域 iframe 调整大小 [英] cross-domain iframe resize
问题描述
如何调整来自另一个域的 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
<小时>编辑 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 上的页面需要在样式中包含页面的宽度,该样式看起来类似于: